]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/STRANGENESS/Correlations/AliAnalysisTaskLambdaOverK0sJets.cxx
Completed changes needed because of previous commit
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Correlations / AliAnalysisTaskLambdaOverK0sJets.cxx
CommitLineData
667b678a 1/*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: X. Sanchez Castro *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
53f51bff 16//git test
17
667b678a 18#include <TCanvas.h>
19#include <TTree.h>
20#include <TFile.h>
21#include <TH1F.h>
22#include <TH2F.h>
9cb4cfe3 23#include <THnSparse.h>
667b678a 24#include <TH3F.h>
25#include <TPDGCode.h>
26#include <TDatabasePDG.h>
27#include <TClonesArray.h>
28#include <TROOT.h>
29
30#include "AliOADBContainer.h"
31
32#include "AliAODMCHeader.h"
33#include "AliAODMCParticle.h"
34#include "AliGenHijingEventHeader.h"
35
36#include "AliAODEvent.h"
37#include "AliAODv0.h"
38#include "AliAODcascade.h"
39
40#include "AliCFContainer.h"
41#include "AliCentrality.h"
42
43#include "AliPID.h"
44#include "AliPIDResponse.h"
45#include "AliAODPid.h"
46
47#include "AliInputEventHandler.h"
48#include "AliAnalysisManager.h"
49
81c9e762 50#include "AliExternalTrackParam.h"
51
667b678a 52#include "AliAnalysisTaskLambdaOverK0sJets.h"
53
9cb4cfe3 54//extern TROOT *gROOT;
55
29f14569 56
667b678a 57ClassImp(AliAnalysisTaskLambdaOverK0sJets)
348080d3 58ClassImp(AliMiniParticle)
667b678a 59
60// Global variables:
61static Int_t nbins = 100; // Number of bins for l, pt, mass for V0
62static Int_t nbinsPhi = 120; // Number of bins for Phi
2757a40b 63static Int_t nbinsdPhi = 20; // Number of bins for dPhi
b6f9da99 64static Int_t nbinsdEta = 30; // Number of bins for dEta
667b678a 65static Int_t nbinPtLP = 200;
66static Int_t nbinsVtx = 20;
67
b6a9eae2 68static Float_t pMin = 0.0; // Lower cut for transverse momentum
69static Float_t pMax = 10.; // Max cut for transverse momentum for V0
70static Float_t ptMaxLP = 50.; // Max cut for transverse momentum LP
667b678a 71
b6a9eae2 72static Float_t lMin = 0.0; // Limits in the histo for fidutial volume
73static Float_t lMax = 100.; // Limits in the fidutial volume
667b678a 74
a04209b7 75static Int_t nMaxEvMix = 250;
348080d3 76
667b678a 77//
78//
79//
80
81AliAnalysisTaskLambdaOverK0sJets::AliAnalysisTaskLambdaOverK0sJets(const char *name) :
cb30d9ae 82AliAnalysisTaskSE(name),
667b678a 83
0aa4191c 84fAOD(0), fCollision("PbPb2010"), fIsMC(kFALSE), fUsePID(kFALSE), fCentMin(0.), fCentMax(90.), fDoQA(kFALSE), fDoMixEvt(kFALSE), fTriggerFB(768), fTrigPtMin(5.), fTrigPtMax(10.), fTrigPtMCMin(5.), fTrigPtMCMax(10000.), fTrigEtaMax(0.8), fCheckIDTrig(kFALSE), fSeparateInjPart(kTRUE), fEndOfHijingEvent(-1), fPIDResponse(0),
6668159e 85
9cb4cfe3 86 fMinPtDaughter(0.160), fMaxEtaDaughter(0.8), fMaxDCADaughter(1.0), fUseEtaCut(kFALSE), fYMax(0.7), fDCAToPrimVtx(0.1), fMinCPA(0.998), fNSigma(3.0), fDaugNClsTPC(70.), fMinCtau(0.), fMaxCtau(3.), fIdTrigger(-1), fIsV0LP(0), fPtV0LP(0.), fIsSndCheck(0),
6668159e 87
cb30d9ae 88 fTPCRadius(125.), fDiffTrigDaugFracTPCSharedCls(0.06),
89
ce2d235a 90fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fEvents(0), fEvtPerCent(0), fCentrality(0), fCentrality2(0), fCentralityTrig(0), fPrimayVtxGlobalvsSPD(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0),
667b678a 91
0aa4191c 92fTriggerEventPlane(0), fTriggerMCPtCent(0), fTriggerMCResPt(0), fTriggerMCResEta(0), fTriggerMCResPhi(0), fTriggerPtCent(0), fTriggerPtCentCh(0), fNTrigPerEvt(0), fTriggerWiSPDHit(0), fTriggerEtaPhi(0), fTrigFracShTPCcls(0), fTriggerDCA(0), fCheckTriggerFromV0Daug(0), fTriggerComingFromDaug(0), fTriggerIsV0(0), fCheckIDTrigPtK0s(0), fCheckIDTrigPhiK0s(0), fCheckIDTrigEtaK0s(0), fCheckIDTrigNclsK0s(0), fCheckIDTrigPtLambda(0), fCheckIDTrigPhiLambda(0), fCheckIDTrigEtaLambda(0), fCheckIDTrigNclsLambda(0), fCheckIDTrigPtAntiLambda(0), fCheckIDTrigPhiAntiLambda(0), fCheckIDTrigEtaAntiLambda(0), fCheckIDTrigNclsAntiLambda(0),
667b678a 93
cb30d9ae 94 fInjectedParticles(0),
ca96d60a 95
e5930cc2 96 fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapEmbeded(0), fK0sAssocPt(0), fK0sAssocPtArm(0), fK0sAssocPtRap(0), fK0sAssocPtRapEmbeded(0), fK0sMCResEta(0), fK0sMCResPhi(0), fK0sMCResPt(0), fK0sPosMCResEta(0), fK0sPosMCResPhi(0), fK0sPosMCResPt(0), fK0sNegMCResEta(0), fK0sNegMCResPhi(0), fK0sNegMCResPt(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0), fLambdaMCPtRapEmbeded(0), fLambdaMCFromXi(0), fLambdaAssocPt(0), fLambdaAssocPtRap(0), fLambdaAssocFromXi(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fLambdaMCResPt(0), fLambdaPosMCResEta(0), fLambdaPosMCResPhi(0), fLambdaPosMCResPt(0), fLambdaNegMCResEta(0), fLambdaNegMCResPhi(0), fLambdaNegMCResPt(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaMCPtRapEmbeded(0), fAntiLambdaMCFromXi(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtRap(0), fAntiLambdaAssocFromXi(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0), fAntiLambdaMCResPt(0), fAntiLambdaPosMCResEta(0), fAntiLambdaPosMCResPhi(0), fAntiLambdaPosMCResPt(0), fAntiLambdaNegMCResEta(0), fAntiLambdaNegMCResPhi(0), fAntiLambdaNegMCResPt(0),
92d8f256 97
98 fHistArmenterosPodolanski(0), fHistArmPodBckg(0),
b6a9eae2 99
0aa4191c 100fK0sMass(0), fK0sMassEmbeded(0), fK0sMassPtEta(0), fK0sMassPtPhi(0), fK0sPosDaugFracShTPCcls(0), fK0sNegDaugFracShTPCcls(0), fK0sDaughtersPt(0), fK0sPosDaugFracShTPCclsTrig(0), fK0sNegDaugFracShTPCclsTrig(0), fK0sDCADaugToPrimVtx(0), fK0sSpatialRes(0), fK0sBckgDecLength(0), fK0sBckgDCADaugToPrimVtx(0), fK0sBckgEtaPhi(0), fK0sBckgPhiRadio(0), fK0sBckgDCANegDaugToPrimVtx(0), fK0sBckgDCAPosDaugToPrimVtx(0), fV0MassCascade(0),
348080d3 101
0aa4191c 102fLambdaMass(0), fLambdaMassEmbeded(0), fLambdaMass2(0), fLambdaMass2Embeded(0), fLambdaMassPtEta(0), fLambdaMassPtPhi(0), fLambdaPosDaugFracShTPCcls(0), fLambdaNegDaugFracShTPCcls(0), fLambdaDaughtersPt(0), fLambdaPosDaugFracShTPCclsTrig(0), fLambdaNegDaugFracShTPCclsTrig(0), fLambdaDCADaugToPrimVtx(0), fLambdaSpatialRes(0), fLambdaBckgDecLength(0), fLambdaBckgDCADaugToPrimVtx(0), fLambdaBckgEtaPhi(0), fLambdaBckgPhiRadio(0), fLambdaBckgDCANegDaugToPrimVtx(0), fLambdaBckgDCAPosDaugToPrimVtx(0),
f25a6d07 103
0aa4191c 104fAntiLambdaMass(0), fAntiLambdaMassEmbeded(0), fAntiLambdaMass2(0), fAntiLambdaMass2Embeded(0), fAntiLambdaMassPtEta(0), fAntiLambdaMassPtPhi(0), fAntiLambdaPosDaugFracShTPCcls(0), fAntiLambdaNegDaugFracShTPCcls(0), fAntiLambdaDaughtersPt(0), fAntiLambdaPosDaugFracShTPCclsTrig(0), fAntiLambdaNegDaugFracShTPCclsTrig(0), fAntiLambdaDCADaugToPrimVtx(0), fAntiLambdaSpatialRes(0), fAntiLambdaBckgDecLength(0), fAntiLambdaBckgDCADaugToPrimVtx(0), fAntiLambdaBckgEtaPhi(0), fAntiLambdaBckgPhiRadio(0), fAntiLambdaBckgDCANegDaugToPrimVtx(0), fAntiLambdaBckgDCAPosDaugToPrimVtx(0),
80c0bcd3 105
ca96d60a 106 fK0sPtPosDaug(0), fK0sPtNegDaug(0), fK0sBckgPtPosDaug(0), fK0sBckgPtNegDaug(0), fK0sPhiEtaPosDaug(0), fK0sPhiEtaNegDaug(0), fK0sBckgPhiEtaPosDaug(0), fK0sBckgPhiEtaNegDaug(0), fK0sDCAPosDaug(0), fK0sDCANegDaug(0), fK0sBckgDCAPosDaug(0), fK0sBckgDCANegDaug(0), fK0sDecayPos(0), fK0sBckgDecayPos(0), fK0sDecayVertex(0), fK0sBckgDecayVertex(0), fK0sCPA(0), fK0sBckgCPA(0), fK0sDCAV0Daug(0), fK0sBckgDCAV0Daug(0), fK0sNClustersTPC(0), fK0sBckgNClustersTPC(0), fK0sNClustersITSPos(0), fK0sNClustersITSNeg(0), fK0sBckgNClustersITSPos(0), fK0sBckgNClustersITSNeg(0),
667b678a 107
478818ef 108 fLambdaPtPosDaug(0), fLambdaPtNegDaug(0), fLambdaBckgPtPosDaug(0), fLambdaBckgPtNegDaug(0), fLambdaPhiEtaPosDaug(0),fLambdaPhiEtaNegDaug(0), fLambdaBckgPhiEtaPosDaug(0), fLambdaBckgPhiEtaNegDaug(0), fLambdaDCAPosDaug(0),fLambdaDCANegDaug(0), fLambdaBckgDCAPosDaug(0), fLambdaBckgDCANegDaug(0), fLambdaDecayPos(0), fLambdaBckgDecayPos(0), fLambdaDecayVertex(0), fLambdaBckgDecayVertex(0), fLambdaCPA(0), fLambdaBckgCPA(0), fLambdaDCAV0Daug(0), fLambdaBckgDCAV0Daug(0), fLambdaNClustersTPC(0), fLambdaBckgNClustersTPC(0), fLambdaNClustersITSPos(0), fLambdaNClustersITSNeg(0), fLambdaBckgNClustersITSPos(0), fLambdaBckgNClustersITSNeg(0),
59e0735e 109
ca96d60a 110 fAntiLambdaPtPosDaug(0), fAntiLambdaPtNegDaug(0), fAntiLambdaBckgPtPosDaug(0), fAntiLambdaBckgPtNegDaug(0), fAntiLambdaPhiEtaPosDaug(0),fAntiLambdaPhiEtaNegDaug(0), fAntiLambdaBckgPhiEtaPosDaug(0),fAntiLambdaBckgPhiEtaNegDaug(0), fAntiLambdaDCAPosDaug(0),fAntiLambdaDCANegDaug(0), fAntiLambdaBckgDCAPosDaug(0), fAntiLambdaBckgDCANegDaug(0), fAntiLambdaDecayPos(0), fAntiLambdaBckgDecayPos(0), fAntiLambdaDecayVertex(0), fAntiLambdaBckgDecayVertex(0), fAntiLambdaCPA(0), fAntiLambdaBckgCPA(0), fAntiLambdaDCAV0Daug(0), fAntiLambdaBckgDCAV0Daug(0), fAntiLambdaNClustersTPC(0), fAntiLambdaBckgNClustersTPC(0), fAntiLambdaNClustersITSPos(0), fAntiLambdaNClustersITSNeg(0), fAntiLambdaBckgNClustersITSPos(0), fAntiLambdaBckgNClustersITSNeg(0)
667b678a 111
112{
113 // Dummy Constructor
114
81c9e762 115 // variables for track splitting:
116 // shifted positionf for thw tracks
117 for(Int_t i=0; i<3; i++){
118 fTrigSftR125[i] = -9999.;
119 fDaugSftR125[i] = -9999.;
120 }
121
ca96d60a 122 // Particles properties in MC
fbaec09e 123 for (Int_t i=0; i<kNCent; i++){
ca96d60a 124
59e0735e 125 // K0s
099a1ea9 126 fK0sMCPtRapVtx[i] = 0;
127 fK0sMCPtRapVtxEmbeded[i] = 0;
b6f9da99 128 fK0sMCPtPhiEta[i] = 0;
129 fK0sAssocPtPhiEta[i] = 0;
ca96d60a 130 // -- Natural particles
131 fK0sAssocPtMassArm[i] = 0;
132 fK0sAssocMassPtVtx[i] = 0;
133 fK0sAssocMassPtDCADaug[i] = 0;
134 fK0sAssocMassPtCPA[i] = 0;
135 fK0sAssocMassPtDCAPV[i] = 0;
136 fK0sAssocMassPtDaugNClsTPC[i] = 0;
0aa4191c 137 fK0sAssocMassPtShTPCcls[i] = 0;
ca96d60a 138 // -- Embeded particles
139 fK0sAssocPtMassArmEmbeded[i] = 0;
140 fK0sAssocMassPtVtxEmbeded[i] = 0;
141 fK0sAssocMassPtDCADaug[i] = 0;
142 fK0sAssocMassPtCPAEmbeded[i] = 0;
143 fK0sAssocMassPtDCAPVEmbeded[i] = 0;
144 fK0sAssocMassPtDaugNClsTPCEmbeded[i] = 0;
0aa4191c 145 fK0sAssocMassPtShTPCclsEmbeded[i] = 0;
3002fb0e 146 // -- Mass vs rapidity vs pt vs centrlaity
147 fK0sMassPtRap[i] = 0;
e5930cc2 148 // -- Splitting checks
478818ef 149 fK0sPosDaugSplCheckCovMat[i] = 0x0;
150 fK0sNegDaugSplCheckCovMat[i] = 0x0;
81c9e762 151 fK0sPosDaugdPhiSdEtaS[i] = 0x0;
152 fK0sNegDaugdPhiSdEtaS[i] = 0x0;
e5930cc2 153 fK0sPosMCResdEtaSdPhiS[i] = 0x0;
154 fK0sNegMCResdEtaSdPhiS[i] = 0x0;
fbaec09e 155
156 // Lambda
099a1ea9 157 fLambdaMCPtRapVtx[i] = 0;
158 fLambdaMCPtRapVtxEmbeded[i] = 0;
fbaec09e 159 fLambdaMCPtPhiEta[i] = 0;
160 fLambdaAssocPtPhiEta[i] = 0;
ca96d60a 161 // -- Natural particles
162 fLambdaAssocMassPtRap[i] = 0;
163 fLambdaAssocMassPtRap2[i] = 0;
164 fLambdaAssocMassPtVtx[i] = 0;
165 fLambdaAssocMassPtDCADaug[i] = 0;
166 fLambdaAssocMassPtCPA[i] = 0;
167 fLambdaAssocMassPtDCAPV[i] = 0;
168 fLambdaAssocMassPtDaugNClsTPC[i] = 0;
0aa4191c 169 fLambdaAssocMassPtShTPCcls[i] = 0;
ca96d60a 170 // -- Embeded particles
171 fLambdaAssocMassPtRapEmbeded[i] = 0;
172 fLambdaAssocMassPtRapEmbeded2[i] = 0;
173 fLambdaAssocMassPtVtxEmbeded[i] = 0;
174 fLambdaAssocMassPtDCADaug[i] = 0;
175 fLambdaAssocMassPtCPAEmbeded[i] = 0;
176 fLambdaAssocMassPtDCAPVEmbeded[i] = 0;
177 fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
0aa4191c 178 fLambdaAssocMassPtShTPCclsEmbeded[i] = 0;
3002fb0e 179 // -- Mass vs rapidity vs pt vs centrlaity
180 fLambdaMassPtRap[i] = 0;
e5930cc2 181 // -- Splitting checks
478818ef 182 fLambdaPosDaugSplCheckCovMat[i] = 0x0;
183 fLambdaNegDaugSplCheckCovMat[i] =0x0;
81c9e762 184 fLambdaPosDaugdPhiSdEtaS[i] = 0x0;
185 fLambdaNegDaugdPhiSdEtaS[i] = 0x0;
e5930cc2 186 fLambdaPosMCResdEtaSdPhiS[i] = 0x0;
187 fLambdaNegMCResdEtaSdPhiS[i] = 0x0;
ca96d60a 188
fbaec09e 189 // AntiLambda
099a1ea9 190 fAntiLambdaMCPtRapVtx[i] = 0;
191 fAntiLambdaMCPtRapVtxEmbeded[i] = 0;
fbaec09e 192 fAntiLambdaMCPtPhiEta[i] = 0;
193 fAntiLambdaAssocPtPhiEta[i] = 0;
ca96d60a 194 // -- Natural particles
195 fAntiLambdaAssocMassPtRap[i] = 0;
196 fAntiLambdaAssocMassPtRap2[i] = 0;
197 fAntiLambdaAssocMassPtVtx[i] = 0;
198 fAntiLambdaAssocMassPtDCADaug[i] = 0;
199 fAntiLambdaAssocMassPtCPA[i] = 0;
200 fAntiLambdaAssocMassPtDCAPV[i] = 0;
201 fAntiLambdaAssocMassPtDaugNClsTPC[i] = 0;
0aa4191c 202 fAntiLambdaAssocMassPtShTPCcls[i] = 0;
ca96d60a 203 // -- Embeded particles
204 fAntiLambdaAssocMassPtRapEmbeded[i] = 0;
205 fAntiLambdaAssocMassPtRapEmbeded2[i] = 0;
206 fAntiLambdaAssocMassPtVtxEmbeded[i] = 0;
207 fAntiLambdaAssocMassPtDCADaug[i] = 0;
208 fAntiLambdaAssocMassPtCPAEmbeded[i] = 0;
209 fAntiLambdaAssocMassPtDCAPVEmbeded[i] = 0;
210 fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
0aa4191c 211 fAntiLambdaAssocMassPtShTPCclsEmbeded[i] = 0;
3002fb0e 212 // -- Mass vs rapidity vs pt vs centrlaity
213 fAntiLambdaMassPtRap[i] = 0;
e5930cc2 214 // -- Splitting checks
478818ef 215 fAntiLambdaPosDaugSplCheckCovMat[i] = 0x0;
216 fAntiLambdaNegDaugSplCheckCovMat[i] = 0x0;
217 fAntiLambdaPosDaugdPhiSdEtaS[i] = 0x0;
218 fAntiLambdaNegDaugdPhiSdEtaS[i] = 0x0;
e5930cc2 219 fAntiLambdaPosMCResdEtaSdPhiS[i] = 0x0;
220 fAntiLambdaNegMCResdEtaSdPhiS[i] = 0x0;
221
fbaec09e 222 }
223
ca96d60a 224 // Correlations in MC
fbaec09e 225 for (Int_t i=0; i<kNCent*kN1; i++){
226 // K0s
667b678a 227 fK0sdPhidEtaMC[i] = 0;
59e0735e 228 // Lambda
667b678a 229 fLambdadPhidEtaMC[i] = 0;
59e0735e 230 // AntiLambda
231 fAntiLambdadPhidEtaMC[i] = 0;
44972668 232 }
233
ca96d60a 234 // Correlations
44972668 235 for (Int_t i=0; i<(kNCent*kN1*kNVtxZ); i++){
236 // K0s
237 fK0sdPhidEtaPtL[i] = 0;
44972668 238 // Lambda
239 fLambdadPhidEtaPtL[i] = 0;
44972668 240 // AntiLambda
ca96d60a 241 fAntiLambdadPhidEtaPtL[i] = 0;
348080d3 242 }
243
348080d3 244 // Mixed events distributions
245 for (Int_t i=0; i<(kN1*kNVtxZ*kNCent); i++){
246 fK0sdPhidEtaME[i] = 0;
247 fLambdadPhidEtaME[i] = 0;
248 fAntiLambdadPhidEtaME[i] = 0;
667b678a 249 }
250
251 // Constructor. Initialization of pointers
252 DefineOutput(1, TList::Class());
6668159e 253 DefineOutput(2, TList::Class());
348080d3 254 DefineOutput(3, TList::Class());
6668159e 255
667b678a 256
257}
258
259//___________________________________________________________________________________________
260
348080d3 261AliAnalysisTaskLambdaOverK0sJets::~AliAnalysisTaskLambdaOverK0sJets()
262{
263
264 // Destructor
265 if(fMEList){
266
267 for(Int_t icent=0; icent<kNCent; icent++){
268 for(Int_t iz=0; iz<kNVtxZ; iz++){
269 fMEList[icent*kNVtxZ+iz]->Delete(); delete fMEList[icent*kNVtxZ+iz];
270 }
271 }
272 delete[] fMEList; fMEList=0x0;
273 }
274
275 if(fTriggerParticles) {
276 delete fTriggerParticles;
277 fTriggerParticles=0x0;
278 }
279
b6f9da99 280 if(fTriggerPartMC) {
281 delete fTriggerPartMC;
282 fTriggerPartMC=0x0;
283 }
284
348080d3 285 if(fAssocParticles) {
286 delete fAssocParticles;
287 fAssocParticles=0x0;
288 }
b6f9da99 289
290 if(fAssocPartMC) {
291 delete fAssocPartMC;
292 fAssocPartMC=0x0;
293 }
9cb4cfe3 294
348080d3 295
296}
297
298//___________________________________________________________________________________________
299
667b678a 300void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
301{
302 // Creating the histograms that are needed for the output
303
304 fOutput = new TList();
305 fOutput->SetOwner();
306
6668159e 307 fOutputQA = new TList();
308 fOutputQA->SetOwner();
309
348080d3 310 fOutputME = new TList();
311 fOutputME->SetOwner();
312
348080d3 313 fMEList = new TList*[kNCent*kNVtxZ];
314 for(Int_t icent=0; icent<kNCent; icent++){
315 for(Int_t iz=0; iz<kNVtxZ; iz++){
316 fMEList[icent*kNVtxZ+iz] = new TList();
317 fMEList[icent*kNVtxZ+iz]->SetOwner(kFALSE);
318 }
319 }
320
b6f9da99 321 char hNameHist[100];
348080d3 322
667b678a 323 // ====== General characteristics of the event and tracks ====== //
324
325 // Counter for the number of events in each step:
ce2d235a 326 fEvents =new TH1F("fEvents","Number of events",14,-0.5,13.5);
667b678a 327 fEvents->GetXaxis()->SetBinLabel(1,"calls to UserExec()");
328 fEvents->GetXaxis()->SetBinLabel(2,"AOD available");
329 fEvents->GetXaxis()->SetBinLabel(3,"CINT1B");
330 fEvents->GetXaxis()->SetBinLabel(4,"V0M Cent");
773f3106 331 fEvents->GetXaxis()->SetBinLabel(5,"Global Vtx > 3 part");
332 fEvents->GetXaxis()->SetBinLabel(6,"SPD Vtx > 3 part");
333 fEvents->GetXaxis()->SetBinLabel(7,"|ZVtx Global - Zvtx SPD| < 0.5 cm");
334 fEvents->GetXaxis()->SetBinLabel(8,"|VtxZ| < 10 cm");
667b678a 335 fEvents->GetXaxis()->SetBinLabel(9,"V0 is LP");
773f3106 336 fEvents->GetXaxis()->SetBinLabel(10," ");
337 fEvents->GetXaxis()->SetBinLabel(11," ");
667b678a 338 fEvents->GetXaxis()->SetBinLabel(12,"Triggered");
339 fEvents->GetXaxis()->SetBinLabel(13,"NOT Triggered");
773f3106 340 fEvents->GetXaxis()->SetBinLabel(14," ");
667b678a 341 fEvents->GetYaxis()->SetTitle("Counts");
342 fOutput->Add(fEvents);
343
ce2d235a 344 fEvtPerCent = new TH2F("fEvtPerCent","Events per centrality bin;Step;Centrality bin",5,-0.5,4.5,4,-0.5,3.5);
345 fOutput->Add(fEvtPerCent);
346
667b678a 347 // Centrality:
0aa4191c 348 fCentrality = new TH1F("fCentrality","Centrality;Centrality (%);Events",500,0.,100.);
667b678a 349 fOutput->Add(fCentrality);
350
0aa4191c 351 fCentrality2 = new TH1F("fCentrality2","Centrality in events with |VtxZ|<10 cm;Centrality (%);Events",500,0.,100.);
53e7de27 352 fOutput->Add(fCentrality2);
353
ca96d60a 354 fCentralityTrig = new TH2F("fCentralityTrig","Centrality in events per trigger selection;Centrality (%);Triger Selection",100,0.,100.,3,0.5,3.5);
355 fCentralityTrig->GetYaxis()->SetBinLabel(1,"kCentral");
80c0bcd3 356 fCentralityTrig->GetYaxis()->SetBinLabel(2,"kSemiCentral");
357 fCentralityTrig->GetYaxis()->SetBinLabel(3,"kMB");
ca96d60a 358 fOutput->Add(fCentralityTrig);
359
667b678a 360 // Primary Vertex:
773f3106 361 fPrimayVtxGlobalvsSPD = new TH2F("fPrimayVtxGlobalvsSPD",";Z_{vtx,tr} (cm);Z_{SPD,tr} (cm)",200,-20,20,200,-20,20);
362 fOutput->Add(fPrimayVtxGlobalvsSPD);
363
59e0735e 364 fPrimaryVertexX = new TH1F("fPrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
667b678a 365 fOutput->Add(fPrimaryVertexX);
366
59e0735e 367 fPrimaryVertexY = new TH1F("fPrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
667b678a 368 fOutput->Add(fPrimaryVertexY);
369
59e0735e 370 fPrimaryVertexZ = new TH1F("fPrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
667b678a 371 fOutput->Add(fPrimaryVertexZ);
ca96d60a 372
667b678a 373
374 // ====== Trigger Particle characteristics ====== //
ca96d60a 375
376 // Difference between Event plane and the Trigger particles:
80c0bcd3 377 fTriggerEventPlane = new TH1F("fTriggerEventPlane", ";#varphi_{EP}-#varphi_{Trig};Events",50,0.,TMath::Pi());
ca96d60a 378 fOutput->Add(fTriggerEventPlane);
667b678a 379
380 // MC: Pt Trigger particle vs centrality:
59e0735e 381 if(fIsMC){
80c0bcd3 382 fTriggerMCPtCent = new TH2F("fTriggerMCPtCent","Trigger particle MC;#it{p}_{T} (GeV/#it{c});centrality (%)",2*nbinPtLP,pMin,2*ptMaxLP,100,0.,100.);
348080d3 383 fOutput->Add(fTriggerMCPtCent);
b6f9da99 384
0e7d3472 385 fTriggerMCResPt = new TH3F("fTriggerMCResPt","Trigger particle MC: #it{p}_{T} resolution;(p_{t,MC}-p_{t,Rec})/p_{t,Rec};#it{p}_{T} (GeV/#it{c});centrality",60,-0.3,0.3,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
b6f9da99 386 fOutput->Add(fTriggerMCResPt);
387
0e7d3472 388 fTriggerMCResEta = new TH3F("fTriggerMCResEta","Trigger particle MC: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
b6f9da99 389 fOutput->Add(fTriggerMCResEta);
390
0e7d3472 391 fTriggerMCResPhi = new TH3F("fTriggerMCResPhi","Trigger particle MC: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
b6f9da99 392 fOutput->Add(fTriggerMCResPhi);
59e0735e 393 }
667b678a 394
395 // Pt Trigger particle vs centrality:
80c0bcd3 396 fTriggerPtCent = new TH3F("fTriggerPtCent","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
667b678a 397 fOutput->Add(fTriggerPtCent);
398
a0f483d6 399 fTriggerPtCentCh = new TH3F("fTriggerPtCentCh","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
400 fOutput->Add(fTriggerPtCentCh);
401
ca96d60a 402 fNTrigPerEvt = new TH2F("fNTrigPerEvt","Number of Trigger Particles Per Event;Counts;Centrality",51,-0.5,50.5,100,0.,100);
348080d3 403 fOutput->Add(fNTrigPerEvt);
404
405 fTriggerWiSPDHit = new TH1F("fTriggerWiSPDHit","Number of Trigger Particles wi SPD Hits",3,0.,3.);
406 fOutput->Add(fTriggerWiSPDHit);
407
667b678a 408 // Phi vs pseudorapidity:
80c0bcd3 409 fTriggerEtaPhi = new TH2F("fTriggerEtaPhi","Trigger particle;#varphi (rad);#eta",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
667b678a 410 fOutput->Add(fTriggerEtaPhi);
411
ce2d235a 412 // DCA to primary vertex:
413 fTriggerDCA = new TH2F("fTriggerDCA","Trigger particle;DCA (cm);",32,0.,3.2,2,0.5,2.5);
414 fTriggerDCA->GetYaxis()->SetBinLabel(1,"XY");
415 fTriggerDCA->GetYaxis()->SetBinLabel(2,"Z");
416 fOutput->Add(fTriggerDCA);
417
0aa4191c 418 // Fraction of shared TPC cls
419 fTrigFracShTPCcls =
420 new TH2F("fTrigFracShTPCcls","Trigger particle: vs #it{p}_{T} vs fraction Shared TPC cls;#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
421 nbinPtLP,pMin,ptMaxLP,50,0,1.);
422 fOutput->Add(fTrigFracShTPCcls);
423
667b678a 424 // Check if Trigger particle comes from a V0 daughter:
425 fCheckTriggerFromV0Daug =
348080d3 426 new TH1F("fCheckTriggerFromV0Daug","Trigger particle from a V0 daughter;;Counts",4,-0.5,3.5);
667b678a 427 fCheckTriggerFromV0Daug->GetXaxis()->SetTitle("Flag");
348080d3 428 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(1,"NOT V0 daug");
429 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(2,"V0 daug");
430 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(3,"V0 daug & V0 LP");
667b678a 431 fOutput->Add(fCheckTriggerFromV0Daug);
432
80c0bcd3 433 fTriggerComingFromDaug = new TH1F("fTriggerComingFromDaug","Trigger particle from a V0 daughter;#it{p}_{T} (GeV/#it{c});Counts",240, 0, 12);
667b678a 434 fOutput->Add(fTriggerComingFromDaug);
435
80c0bcd3 436 fTriggerIsV0 = new TH1F("fTriggerIsV0","V0 candidate is a LP;#it{p}_{T} (GeV/#it{c});Counts",nbinPtLP,pMin,ptMaxLP);
667b678a 437 fOutput->Add(fTriggerIsV0);
438
0e7d3472 439 // ------------------- > Comparing properties of this trigger with the daughters
348080d3 440 // K0s
b6f9da99 441 fCheckIDTrigPtK0s = new TH3F("fCheckIDTrigPtK0s","K^{0}_{S};#deltap/p_{tri};;p_{V0}",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
442 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(1,"Pos Daug X");
443 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
444 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
445 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(4,"Neg Daug X");
446 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
447 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
6668159e 448 fOutput->Add(fCheckIDTrigPtK0s);
449
80c0bcd3 450 fCheckIDTrigPhiK0s = new TH3F("fCheckIDTrigPhiK0s","K^{0}_{S};#delta#varphi;;p_{V0}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
b6f9da99 451 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
452 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
6668159e 453 fOutput->Add(fCheckIDTrigPhiK0s);
454
ca96d60a 455 fCheckIDTrigEtaK0s = new TH3F("fCheckIDTrigEtaK0s","K^{0}_{S};#delta#eta;;p_{V0}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
b6f9da99 456 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
457 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 458 fOutput->Add(fCheckIDTrigEtaK0s);
459
9cb4cfe3 460 fCheckIDTrigNclsK0s = new TH3F("fCheckIDTrigNclsK0s","K^{0}_{S};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
80c0bcd3 461 fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
462 fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
463 fOutput->Add(fCheckIDTrigNclsK0s);
464
348080d3 465 // Lambda
ca96d60a 466 fCheckIDTrigPtLambda = new TH3F("fCheckIDTrigPtLambda","#Lambda",40,-0.1,0.1,7,-0.5,6.5,100,1.,11.);
b6f9da99 467 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
468 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
469 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
470 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
471 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
472 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
6668159e 473 fOutput->Add(fCheckIDTrigPtLambda);
474
ca96d60a 475 fCheckIDTrigPhiLambda = new TH3F("fCheckIDTrigPhiLambda","#Lambda",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
b6f9da99 476 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
477 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
6668159e 478 fOutput->Add(fCheckIDTrigPhiLambda);
479
ca96d60a 480 fCheckIDTrigEtaLambda = new TH3F("fCheckIDTrigEtaLambda","#Lambda",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
b6f9da99 481 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
482 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 483 fOutput->Add(fCheckIDTrigEtaLambda);
484
9cb4cfe3 485 fCheckIDTrigNclsLambda = new TH3F("fCheckIDTrigNclsLambda","#Lambda;NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
80c0bcd3 486 fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
487 fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
488 fOutput->Add(fCheckIDTrigNclsLambda);
489
348080d3 490 // AntiLambda
b6f9da99 491 fCheckIDTrigPtAntiLambda = new TH3F("fCheckIDTrigPtAntiLambda","#bar{#Lambda}",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
492 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
493 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
494 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
495 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
496 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
497 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
348080d3 498 fOutput->Add(fCheckIDTrigPtAntiLambda);
499
ca96d60a 500 fCheckIDTrigPhiAntiLambda = new TH3F("fCheckIDTrigPhiAntiLambda","#bar{#Lambda}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
b6f9da99 501 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
502 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 503 fOutput->Add(fCheckIDTrigPhiAntiLambda);
504
ca96d60a 505 fCheckIDTrigEtaAntiLambda = new TH3F("fCheckIDTrigEtaAntiLambda","#bar{#Lambda}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
b6f9da99 506 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
507 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 508 fOutput->Add(fCheckIDTrigEtaAntiLambda);
667b678a 509
9cb4cfe3 510 fCheckIDTrigNclsAntiLambda = new TH3F("fCheckIDTrigNclsAntiLambda","#bar{#Lambda};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
80c0bcd3 511 fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
512 fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
513 fOutput->Add(fCheckIDTrigNclsAntiLambda);
514
667b678a 515 // ====== MC-true and MC-Association information ====== //
516 if(fIsMC){
517
348080d3 518 fInjectedParticles = new TH1F("fInjectedParticles","Injected particles;;Counts",2,0.,2.);
519 fInjectedParticles->GetXaxis()->SetBinLabel(1,"Injected");
520 fInjectedParticles->GetXaxis()->SetBinLabel(2,"Natural");
521 fOutput->Add(fInjectedParticles);
667b678a 522
348080d3 523 // K0s MC-true:
80c0bcd3 524 fK0sMCPt = new TH1F("fK0sMCPt", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
348080d3 525 fOutput->Add(fK0sMCPt);
b6a9eae2 526
80c0bcd3 527 fK0sMCPtRap = new TH3F("fK0sMCPtRap", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
348080d3 528 fOutput->Add(fK0sMCPtRap);
b6f9da99 529
80c0bcd3 530 fK0sMCPtRap2 = new TH3F("fK0sMCPtRap2", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
b6f9da99 531 fOutput->Add(fK0sMCPtRap2);
53e7de27 532
099a1ea9 533 for(Int_t jj=0;jj<kNCent;jj++){
534 snprintf(hNameHist,100, "fK0sMCPtRapVtx_Cent_%d",jj);
535 fK0sMCPtRapVtx[jj] = new TH3F(hNameHist, "K^{0}_{S} MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
536 fOutput->Add(fK0sMCPtRapVtx[jj]);
537 }
ca96d60a 538
80c0bcd3 539 fK0sMCPtRapEmbeded = new TH3F("fK0sMCPtRapEmbeded", "K^{0}_{S} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.,1.,100,0.,100.);
53e7de27 540 fOutput->Add(fK0sMCPtRapEmbeded);
31f87a49 541
099a1ea9 542 for(Int_t jj=0;jj<kNCent;jj++){
543 snprintf(hNameHist,100, "fK0sMCPtRapVtxEmbeded_Cent_%d",jj);
544 fK0sMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist, "K^{0}_{S} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
545 fOutput->Add(fK0sMCPtRapVtxEmbeded[jj]);
546 }
667b678a 547
b6f9da99 548 for(Int_t jj=0;jj<kNCent;jj++){
549 snprintf(hNameHist,100, "fK0sMCPtPhiEta_Cent_%d",jj);
80c0bcd3 550 fK0sMCPtPhiEta[jj] = new TH3F(hNameHist, "K^{0}_{S} MC;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.,1.,nbins,pMin,pMax);
b6f9da99 551 fOutput->Add(fK0sMCPtPhiEta[jj]);
552 }
667b678a 553
348080d3 554 // K0s MC-Association:
555 fK0sAssocPt =
80c0bcd3 556 new TH1F("fK0sAssocPt","K^{0}_{S} Assoc: L_{T} vs #it{p}_{T};#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
348080d3 557 fOutput->Add(fK0sAssocPt);
59e0735e 558
348080d3 559 fK0sAssocPtArm =
80c0bcd3 560 new TH3F("fK0sAssocPtArm","K^{0}_{S} Assoc: #it{p}_{T} vs y vs centrality;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
348080d3 561 fOutput->Add(fK0sAssocPtArm);
59e0735e 562
80c0bcd3 563 fK0sAssocPtRap = new TH3F("fK0sAssocPtRap","K^{0}_{S} Assoc;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
348080d3 564 fOutput->Add(fK0sAssocPtRap);
53e7de27 565
80c0bcd3 566 fK0sAssocPtRapEmbeded = new TH3F("fK0sAssocPtRapEmbeded","K^{0}_{S} Assoc - Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
53e7de27 567 fOutput->Add(fK0sAssocPtRapEmbeded);
348080d3 568
b6f9da99 569 for(Int_t jj=0;jj<kNCent;jj++){
570 snprintf(hNameHist,100, "fK0sAssocPtPhiEta_Cent_%d",jj);
80c0bcd3 571 fK0sAssocPtPhiEta[jj] = new TH3F(hNameHist,"K^{0}_{S} Assoc;#varphi;#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
b6f9da99 572 fOutput->Add(fK0sAssocPtPhiEta[jj]);
573 }
ca96d60a 574
9cb4cfe3 575
ca96d60a 576 // Histogramas para estudios sistematicos de la eficiencia
9cb4cfe3 577 Int_t binsEff1[3] = {nbins,nbins,20}; Double_t xminEff1[3] = {0.398,pMin,-1.0}; Double_t xmaxEff1[3] = {0.598,pMax,1.0}; // gral efficiency
0aa4191c 578 Int_t binsEff2[4] = {nbins,nbins,20,20}; Double_t xminEff2[4] = {0.398,pMin,-1.0,-10.}; Double_t xmaxEff2[4] = {0.598,pMax,1.0,10.}; // vtx cut
9cb4cfe3 579 Int_t binsEff3[4] = {nbins,nbins,20,60}; Double_t xminEff3[4] = {0.398,pMin,-1.0,0.}; Double_t xmaxEff3[4] = {0.598,pMax,1.0,1.2}; // dca between daughters
580 Int_t binsEff4[4] = {nbins,nbins,20,50}; Double_t xminEff4[4] = {0.398,pMin,-1.0,0.9975}; Double_t xmaxEff4[4] = {0.598,pMax,1.0,1.}; // cpa
581 Int_t binsEff5[5] = {nbins,nbins,20,99,99}; Double_t xminEff5[5] = {0.398,pMin,-1.0,0.,0.}; Double_t xmaxEff5[5] = {0.598,pMax,1.0,3.3,3.3}; // dca to prim. vtx
582 Int_t binsEff6[5] = {nbins,nbins,20,170,170}; Double_t xminEff6[5] = {0.398,pMin,-1.0,0.5,0.5}; Double_t xmaxEff6[5] = {0.598,pMax,1.0,170.5,170}; // No. TPC Cls
0aa4191c 583 Int_t binsEffKsh[5] = {nbins,nbins,20,50,50}; Double_t xminEffKsh[5] = {0.398,pMin,-1.0,0.,0.}; Double_t xmaxEffKsh[5] = {0.598,pMax,1.0,1.0,1.0}; //shared TPC cls
9cb4cfe3 584
ca96d60a 585 for(Int_t i=0; i<kNCent; i++){
586
587 /// ------- Natural particles
588 snprintf(hNameHist,100, "fK0sAssocPtMassArm_Cent_%d",i);
9cb4cfe3 589 fK0sAssocPtMassArm[i] = new THnSparseD(hNameHist,"K^{0}_{S} Assoc;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
ca96d60a 590 fOutput->Add(fK0sAssocPtMassArm[i]);
591
592 snprintf(hNameHist,100, "fK0sAssocMassPtVtx_Cent_%d",i);
9cb4cfe3 593 fK0sAssocMassPtVtx[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
ca96d60a 594 fOutput->Add(fK0sAssocMassPtVtx[i]);
595
596 snprintf(hNameHist,100, "fK0sAssocMassPtDCADaug_Cent_%d",i);
9cb4cfe3 597 fK0sAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
ca96d60a 598 fOutput->Add(fK0sAssocMassPtDCADaug[i]);
599
600 snprintf(hNameHist,100, "fK0sAssocMassPtCPA_Cent_%d",i);
9cb4cfe3 601 fK0sAssocMassPtCPA[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
ca96d60a 602 fOutput->Add(fK0sAssocMassPtCPA[i]);
9cb4cfe3 603
ca96d60a 604 snprintf(hNameHist,100, "fK0sAssocMassPtDCAPV_Cent_%d",i);
9cb4cfe3 605 fK0sAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
ca96d60a 606 fOutput->Add(fK0sAssocMassPtDCAPV[i]);
9cb4cfe3 607
ca96d60a 608 snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPC_Cent_%d",i);
9cb4cfe3 609 fK0sAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
ca96d60a 610 fOutput->Add(fK0sAssocMassPtDaugNClsTPC[i]);
611
0aa4191c 612 snprintf(hNameHist,100, "fK0sAssocMassPtShTPCcls_Cent_%d",i);
613 fK0sAssocMassPtShTPCcls[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos fraction shared TPC Cls; Neg fraction shared TPC Cls;",5,binsEffKsh,xminEffKsh,xmaxEffKsh);
614 fOutput->Add(fK0sAssocMassPtShTPCcls[i]);
615
ca96d60a 616 /// ----- Embeded particles
617 snprintf(hNameHist,100, "fK0sAssocPtMassArmEmbeded_Cent_%d",i);
9cb4cfe3 618 fK0sAssocPtMassArmEmbeded[i] = new THnSparseD(hNameHist,"K^{0}_{S} Assoc Embeded;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
ca96d60a 619 fOutput->Add(fK0sAssocPtMassArmEmbeded[i]);
620
621 snprintf(hNameHist,100, "fK0sAssocMassPtVtxEmbeded_Cent_%d",i);
9cb4cfe3 622 fK0sAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
ca96d60a 623 fOutput->Add(fK0sAssocMassPtVtxEmbeded[i]);
624
625 snprintf(hNameHist,100, "fK0sAssocMassPtDCADaugEmbeded_Cent_%d",i);
9cb4cfe3 626 fK0sAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
ca96d60a 627 fOutput->Add(fK0sAssocMassPtDCADaugEmbeded[i]);
628
629 snprintf(hNameHist,100, "fK0sAssocMassPtCPAEmbeded_Cent_%d",i);
9cb4cfe3 630 fK0sAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
ca96d60a 631 fOutput->Add(fK0sAssocMassPtCPAEmbeded[i]);
632
633 snprintf(hNameHist,100, "fK0sAssocMassPtDCAPVEmbeded_Cent_%d",i);
9cb4cfe3 634 fK0sAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
ca96d60a 635 fOutput->Add(fK0sAssocMassPtDCAPVEmbeded[i]);
636
ca96d60a 637 snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
9cb4cfe3 638 fK0sAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
ca96d60a 639 fOutput->Add(fK0sAssocMassPtDaugNClsTPCEmbeded[i]);
640
0aa4191c 641 snprintf(hNameHist,100, "fK0sAssocMassPtShTPCclsEmbeded_Cent_%d",i);
642 fK0sAssocMassPtShTPCclsEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos fraction shared TPC Cls; Neg fraction shared TPC Cls;",5,binsEffKsh,xminEffKsh,xmaxEffKsh);
643 fOutput->Add(fK0sAssocMassPtShTPCclsEmbeded[i]);
644
ca96d60a 645 }
b6f9da99 646
80c0bcd3 647 fK0sMCResEta = new TH3F("fK0sMCResEta","K^{0}_{S} Assoc: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
b6f9da99 648 fOutput->Add(fK0sMCResEta);
59e0735e 649
80c0bcd3 650 fK0sMCResPhi = new TH3F("fK0sMCResPhi","K^{0}_{S} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
348080d3 651 fOutput->Add(fK0sMCResPhi);
59e0735e 652
e5930cc2 653 fK0sMCResPt = new TH3F("fK0sMCResPt","K^{0}_{S} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
654 fOutput->Add(fK0sMCResPt);
655
656 fK0sPosMCResEta = new TH3F("fK0sPosMCResEta","K^{0}_{S} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
657 fOutput->Add(fK0sPosMCResEta);
658
659 fK0sPosMCResPhi = new TH3F("fK0sPosMCResPhi","K^{0}_{S} Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
660 fOutput->Add(fK0sPosMCResPhi);
661
662 fK0sPosMCResPt = new TH3F("fK0sPosMCResPt","K^{0}_{S} Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
663 fOutput->Add(fK0sPosMCResPt);
664
665 fK0sNegMCResEta = new TH3F("fK0sNegMCResEta","K^{0}_{S} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
666 fOutput->Add(fK0sNegMCResEta);
667
668 fK0sNegMCResPhi = new TH3F("fK0sNegMCResPhi","K^{0}_{S} Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
669 fOutput->Add(fK0sNegMCResPhi);
670
671 fK0sNegMCResPt = new TH3F("fK0sNegMCResPt","K^{0}_{S} Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
672 fOutput->Add(fK0sNegMCResPt);
673
348080d3 674 // Lambda MC-true:
80c0bcd3 675 fLambdaMCPt = new TH1F("fLambdaMCPt","#Lambda MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
348080d3 676 fOutput->Add(fLambdaMCPt);
59e0735e 677
80c0bcd3 678 fLambdaMCPtRap = new TH3F("fLambdaMCPtRap","#Lambda MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
348080d3 679 fOutput->Add(fLambdaMCPtRap);
b6f9da99 680
80c0bcd3 681 fLambdaMCPtRap2 = new TH3F("fLambdaMCPtRap2","#Lambda MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
b6f9da99 682 fOutput->Add(fLambdaMCPtRap2);
53e7de27 683
099a1ea9 684 for(Int_t jj=0;jj<kNCent;jj++){
685 snprintf(hNameHist,100, "fLambdaMCPtRapVtx_Cent_%d",jj);
686 fLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#Lambda MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
687 fOutput->Add(fLambdaMCPtRapVtx[jj]);
688 }
ca96d60a 689
80c0bcd3 690 fLambdaMCPtRapEmbeded = new TH3F("fLambdaMCPtRapEmbeded","#Lambda Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
53e7de27 691 fOutput->Add(fLambdaMCPtRapEmbeded);
348080d3 692
099a1ea9 693 for(Int_t jj=0;jj<kNCent;jj++){
694 snprintf(hNameHist,100, "fLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
695 fLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#Lambda Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
696 fOutput->Add(fLambdaMCPtRapVtxEmbeded[jj]);
697 }
ca96d60a 698
80c0bcd3 699 fLambdaMCFromXi = new TH2F("fLambdaMCFromXi", "#Lambda from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
31f87a49 700 fOutput->Add(fLambdaMCFromXi);
701
b6f9da99 702 for(Int_t jj=0;jj<kNCent;jj++){
703 snprintf(hNameHist,100, "fLambdaMCPtPhiEta_Cent_%d",jj);
80c0bcd3 704 fLambdaMCPtPhiEta[jj] = new TH3F(hNameHist,"#Lambda MC;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
b6f9da99 705 fOutput->Add(fLambdaMCPtPhiEta[jj]);
706 }
59e0735e 707
348080d3 708 // Lambda MC-Association:
709 fLambdaAssocPt =
80c0bcd3 710 new TH1F("fLambdaAssocPt","#Lambda Assoc: L_{T} vs #it{p}_{T};#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
348080d3 711 fOutput->Add(fLambdaAssocPt);
59e0735e 712
80c0bcd3 713 fLambdaAssocPtRap = new TH3F("fLambdaAssocPtRap", "#Lambda Assoc;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
348080d3 714 fOutput->Add(fLambdaAssocPtRap);
53e7de27 715
80c0bcd3 716 fLambdaAssocFromXi = new TH2F("fLambdaAssocFromXi", "#Lambda from Xi Assoc;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
31f87a49 717 fOutput->Add(fLambdaAssocFromXi);
718
b6f9da99 719 for(Int_t jj=0;jj<kNCent;jj++){
720 snprintf(hNameHist,100, "fLambdaAssocPtPhiEta_Cent_%d",jj);
80c0bcd3 721 fLambdaAssocPtPhiEta[jj] = new TH3F(hNameHist, "#Lambda Assoc;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
b6f9da99 722 fOutput->Add(fLambdaAssocPtPhiEta[jj]);
723 }
ca96d60a 724
725 // Histogramas para estudios sistematicos de la eficiencia
0aa4191c 726 Int_t binsEff7[3] = {nbins,nbins,20}; Double_t xminEff7[3] = {1.065,pMin,-1.0}; Double_t xmaxEff7[3] = {1.165,pMax,1.0}; // gral efficiency
727 Int_t binsEff8[4] = {nbins,nbins,20,20}; Double_t xminEff8[4] = {1.065,pMin,-1.0,-10.}; Double_t xmaxEff8[4] = {1.165,pMax,1.0,10.}; // vtx
728 Int_t binsEff9[4] = {nbins,nbins,20,60}; Double_t xminEff9[4] = {1.065,pMin,-1.0,0.}; Double_t xmaxEff9[4] = {1.165,pMax,1.0,1.2}; // dca between daughters
729 Int_t binsEff10[4] = {nbins,nbins,20,50}; Double_t xminEff10[4] = {1.065,pMin,-1.0,0.9975}; Double_t xmaxEff10[4] = {1.165,pMax,1.0,1.}; // cpa
730 Int_t binsEff11[5] = {nbins,nbins,20,99,99}; Double_t xminEff11[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEff11[5] = {1.165,pMax,1.0,3.3,3.3}; // dca to prim. vtx
9cb4cfe3 731 Int_t binsEff12[5] = {nbins,nbins,20,170,170}; Double_t xminEff12[5] = {1.065,pMin,-1.0,0.5,0.5}; Double_t xmaxEff12[5] = {1.165,pMax,1.0,170.5,170.5}; // No. TPC Cls
0aa4191c 732 Int_t binsEffLsh[5] = {nbins,nbins,20,50,50}; Double_t xminEffLsh[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEffLsh[5] = {1.165,pMax,1.0,1.0,1.0}; // shared TPC cls
9cb4cfe3 733
ca96d60a 734 for(Int_t i=0; i<kNCent; i++){
9cb4cfe3 735
ca96d60a 736 // --------- Natural particles
737 snprintf(hNameHist,100, "fLambdaAssocMassPtRap_Cent_%d",i);
9cb4cfe3 738 fLambdaAssocMassPtRap[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
ca96d60a 739 fOutput->Add(fLambdaAssocMassPtRap[i]);
9cb4cfe3 740
ca96d60a 741 snprintf(hNameHist,100, "fLambdaAssocMassPtRap2_Cent_%d",i);
9cb4cfe3 742 fLambdaAssocMassPtRap2[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
ca96d60a 743 fOutput->Add(fLambdaAssocMassPtRap2[i]);
9cb4cfe3 744
ca96d60a 745 snprintf(hNameHist,100, "fLambdaAssocMassPtVtx_Cent_%d",i);
9cb4cfe3 746 fLambdaAssocMassPtVtx[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
ca96d60a 747 fOutput->Add(fLambdaAssocMassPtVtx[i]);
9cb4cfe3 748
ca96d60a 749 snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaug_Cent_%d",i);
9cb4cfe3 750 fLambdaAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
ca96d60a 751 fOutput->Add(fLambdaAssocMassPtDCADaug[i]);
9cb4cfe3 752
ca96d60a 753 snprintf(hNameHist,100, "fLambdaAssocMassPtCPA_Cent_%d",i);
9cb4cfe3 754 fLambdaAssocMassPtCPA[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
ca96d60a 755 fOutput->Add(fLambdaAssocMassPtCPA[i]);
9cb4cfe3 756
ca96d60a 757 snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPV_Cent_%d",i);
9cb4cfe3 758 fLambdaAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
ca96d60a 759 fOutput->Add(fLambdaAssocMassPtDCAPV[i]);
760
761 snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
9cb4cfe3 762 fLambdaAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
ca96d60a 763 fOutput->Add(fLambdaAssocMassPtDaugNClsTPC[i]);
764
0aa4191c 765 snprintf(hNameHist,100, "fLambdaAssocMassPtShTPCcls_Cent_%d",i);
766 fLambdaAssocMassPtShTPCcls[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos fraction shared TPC Cls; Neg fraction shared TPC Cls;",5,binsEffLsh,xminEffLsh,xmaxEffLsh);
767 fOutput->Add(fLambdaAssocMassPtShTPCcls[i]);
768
769
ca96d60a 770 // ------------ Embeded particles
771 snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded_Cent_%d",i);
9cb4cfe3 772 fLambdaAssocMassPtRapEmbeded[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
ca96d60a 773 fOutput->Add(fLambdaAssocMassPtRapEmbeded[i]);
774
775 snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
9cb4cfe3 776 fLambdaAssocMassPtRapEmbeded2[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
ca96d60a 777 fOutput->Add(fLambdaAssocMassPtRapEmbeded2[i]);
778
779 snprintf(hNameHist,100, "fLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
9cb4cfe3 780 fLambdaAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
ca96d60a 781 fOutput->Add(fLambdaAssocMassPtVtxEmbeded[i]);
782
783 snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
9cb4cfe3 784 fLambdaAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
ca96d60a 785 fOutput->Add(fLambdaAssocMassPtDCADaugEmbeded[i]);
9cb4cfe3 786
ca96d60a 787 snprintf(hNameHist,100, "fLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
9cb4cfe3 788 fLambdaAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
ca96d60a 789 fOutput->Add(fLambdaAssocMassPtCPAEmbeded[i]);
790
791 snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
9cb4cfe3 792 fLambdaAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
ca96d60a 793 fOutput->Add(fLambdaAssocMassPtDCAPVEmbeded[i]);
794
ca96d60a 795 snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
9cb4cfe3 796 fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
ca96d60a 797 fOutput->Add(fLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
0aa4191c 798
799 snprintf(hNameHist,100, "fLambdaAssocMassPtShTPCclsEmbeded_Cent_%d",i);
800 fLambdaAssocMassPtShTPCclsEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos fraction shared TPC Cls; Neg fraction shared TPC Cls;",5,binsEffLsh,xminEffLsh,xmaxEffLsh);
801 fOutput->Add(fLambdaAssocMassPtShTPCclsEmbeded[i]);
802
ca96d60a 803 }
804
80c0bcd3 805 fLambdaMCResEta = new TH3F("fLambdaMCResEta","#Lambda Assoc: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
b6f9da99 806 fOutput->Add(fLambdaMCResEta);
59e0735e 807
80c0bcd3 808 fLambdaMCResPhi = new TH3F("fLambdaMCResPhi","#Lambda Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
348080d3 809 fOutput->Add(fLambdaMCResPhi);
ca96d60a 810
e5930cc2 811 fLambdaMCResPt = new TH3F("fLambdaMCResPt","#Lambda Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
812 fOutput->Add(fLambdaMCResPt);
813
814 fLambdaPosMCResEta = new TH3F("fLambdaPosMCResEta","#Lambda Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
815 fOutput->Add(fLambdaPosMCResEta);
816
817 fLambdaPosMCResPhi = new TH3F("fLambdaPosMCResPhi","#Lambda Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
818 fOutput->Add(fLambdaPosMCResPhi);
819
820 fLambdaPosMCResPt = new TH3F("fLambdaPosMCResPt","#Lambda Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
821 fOutput->Add(fLambdaPosMCResPt);
822
823 fLambdaNegMCResEta = new TH3F("fLambdaNegMCResEta","#Lambda Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
824 fOutput->Add(fLambdaNegMCResEta);
825
826 fLambdaNegMCResPhi = new TH3F("fLambdaNegMCResPhi","#Lambda Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
827 fOutput->Add(fLambdaNegMCResPhi);
828
829 fLambdaNegMCResPt = new TH3F("fLambdaNegMCResPt","#Lambda Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
830 fOutput->Add(fLambdaNegMCResPt);
831
348080d3 832 // AntiLambda MC-true:
80c0bcd3 833 fAntiLambdaMCPt = new TH1F("fAntiLambdaMCPt","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
348080d3 834 fOutput->Add(fAntiLambdaMCPt);
ca96d60a 835
80c0bcd3 836 fAntiLambdaMCPtRap = new TH3F("fAntiLambdaMCPtRap","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
348080d3 837 fOutput->Add(fAntiLambdaMCPtRap);
ca96d60a 838
80c0bcd3 839 fAntiLambdaMCPtRap2 = new TH3F("fAntiLambdaMCPtRap2","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
b6f9da99 840 fOutput->Add(fAntiLambdaMCPtRap2);
53e7de27 841
099a1ea9 842 for(Int_t jj=0;jj<kNCent;jj++){
843 snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtx_Cent_%d",jj);
844 fAntiLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#bar{#Lambda} MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
845 fOutput->Add(fAntiLambdaMCPtRapVtx[jj]);
846 }
ca96d60a 847
80c0bcd3 848 fAntiLambdaMCPtRapEmbeded = new TH3F("fAntiLambdaMCPtRapEmbeded","#bar{#Lambda} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
53e7de27 849 fOutput->Add(fAntiLambdaMCPtRapEmbeded);
ca96d60a 850
099a1ea9 851 for(Int_t jj=0;jj<kNCent;jj++){
852 snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
853 fAntiLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#bar{#Lambda} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
854 fOutput->Add(fAntiLambdaMCPtRapVtxEmbeded[jj]);
855 }
ca96d60a 856
80c0bcd3 857 fAntiLambdaMCFromXi = new TH2F("fAntiLambdaMCFromXi", "#bar{#Lambda} from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
31f87a49 858 fOutput->Add(fAntiLambdaMCFromXi);
859
b6f9da99 860 for(Int_t jj=0;jj<kNCent;jj++){
861 snprintf(hNameHist,100, "fAntiLambdaMCPtPhiEta_Cent_%d",jj);
80c0bcd3 862 fAntiLambdaMCPtPhiEta[jj] = new TH3F(hNameHist,"#bar{#Lambda} MC;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
b6f9da99 863 fOutput->Add(fAntiLambdaMCPtPhiEta[jj]);
864 }
ca96d60a 865
348080d3 866 // AntiLambda MC-Association:
867 fAntiLambdaAssocPt =
80c0bcd3 868 new TH1F("fAntiLambdaAssocPt","#bar{#Lambda} Assoc: L_{T} vs #it{p}_{T};#it{p}_{T} (GeV/#it{c})",nbins,pMin,pMax);
348080d3 869 fOutput->Add(fAntiLambdaAssocPt);
ca96d60a 870
80c0bcd3 871 fAntiLambdaAssocPtRap = new TH3F("fAntiLambdaAssocPtRap", "#bar{#Lambda} Assoc;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
348080d3 872 fOutput->Add(fAntiLambdaAssocPtRap);
873
80c0bcd3 874 fAntiLambdaAssocFromXi = new TH2F("fAntiLambdaAssocFromXi", "#bar{#Lambda} from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
31f87a49 875 fOutput->Add(fAntiLambdaAssocFromXi);
876
b6f9da99 877 for(Int_t jj=0;jj<kNCent;jj++){
878 snprintf(hNameHist,100, "fAntiLambdaAssocPtPhiEta_Cent_%d",jj);
80c0bcd3 879 fAntiLambdaAssocPtPhiEta[jj] = new TH3F(hNameHist, "#Lambda Assoc;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
b6f9da99 880 fOutput->Add(fAntiLambdaAssocPtPhiEta[jj]);
881 }
882
ca96d60a 883 // Histogramas para estudios sistematicos de la eficiencia
9cb4cfe3 884 Int_t binsEff13[3] = {nbins,nbins,20}; Double_t xminEff13[3] = {1.065,pMin,-1.0}; Double_t xmaxEff13[3] = {1.165,pMax,1.0}; // gral efficiency
0aa4191c 885 Int_t binsEff14[4] = {nbins,nbins,20,20}; Double_t xminEff14[4] = {1.065,pMin,-1.0,-10.}; Double_t xmaxEff14[4] = {1.165,pMax,1.0,10.}; // vtx
9cb4cfe3 886 Int_t binsEff15[4] = {nbins,nbins,20,60}; Double_t xminEff15[4] = {1.065,pMin,-1.0,0.}; Double_t xmaxEff15[4] = {1.165,pMax,1.0,1.2}; // dca between daug
887 Int_t binsEff16[4] = {nbins,nbins,20,50}; Double_t xminEff16[4] = {1.065,pMin,-1.0,0.9975}; Double_t xmaxEff16[4] = {1.165,pMax,1.0,1.}; // cpa
888 Int_t binsEff17[5] = {nbins,nbins,20,99,99}; Double_t xminEff17[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEff17[5] = {1.165,pMax,1.0,3.3,3.3}; // dca to prim. vtx
889 Int_t binsEff18[5] = {nbins,nbins,20,170,170}; Double_t xminEff18[5] = {1.065,pMin,-1.0,0.5,0.5}; Double_t xmaxEff18[5] = {1.165,pMax,1.0,170.5,170.5}; // No. TPC Cls
0aa4191c 890 Int_t binsEffALsh[5] = {nbins,nbins,20,50,50}; Double_t xminEffALsh[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEffALsh[5] = {1.165,pMax,1.0,1.0,1.0}; // shared TPC cls
891
ca96d60a 892 for(Int_t i=0; i<kNCent; i++){
893 // --------- Natural particles
894 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap_Cent_%d",i);
9cb4cfe3 895 fAntiLambdaAssocMassPtRap[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
ca96d60a 896 fOutput->Add(fAntiLambdaAssocMassPtRap[i]);
897
898 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap2_Cent_%d",i);
9cb4cfe3 899 fAntiLambdaAssocMassPtRap2[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
ca96d60a 900 fOutput->Add(fAntiLambdaAssocMassPtRap2[i]);
9cb4cfe3 901
ca96d60a 902 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtx_Cent_%d",i);
9cb4cfe3 903 fAntiLambdaAssocMassPtVtx[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
ca96d60a 904 fOutput->Add(fAntiLambdaAssocMassPtVtx[i]);
905
906 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaug_Cent_%d",i);
9cb4cfe3 907 fAntiLambdaAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
ca96d60a 908 fOutput->Add(fAntiLambdaAssocMassPtDCADaug[i]);
909
910 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPA_Cent_%d",i);
9cb4cfe3 911 fAntiLambdaAssocMassPtCPA[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
ca96d60a 912 fOutput->Add(fAntiLambdaAssocMassPtCPA[i]);
913
914 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPV_Cent_%d",i);
9cb4cfe3 915 fAntiLambdaAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
ca96d60a 916 fOutput->Add(fAntiLambdaAssocMassPtDCAPV[i]);
917
918 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
9cb4cfe3 919 fAntiLambdaAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
ca96d60a 920 fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPC[i]);
921
0aa4191c 922 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtShTPCcls_Cent_%d",i);
923 fAntiLambdaAssocMassPtShTPCcls[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos fraction shared TPC Cls; Neg fraction shared TPC Cls;",5,binsEffALsh,xminEffALsh,xmaxEffALsh);
924 fOutput->Add(fAntiLambdaAssocMassPtShTPCcls[i]);
925
ca96d60a 926 // ------------ Embeded particles
927 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded_Cent_%d",i);
9cb4cfe3 928 fAntiLambdaAssocMassPtRapEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
ca96d60a 929 fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded[i]);
930
931 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
9cb4cfe3 932 fAntiLambdaAssocMassPtRapEmbeded2[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
ca96d60a 933 fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded2[i]);
934
935 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
9cb4cfe3 936 fAntiLambdaAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
ca96d60a 937 fOutput->Add(fAntiLambdaAssocMassPtVtxEmbeded[i]);
938
939 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
9cb4cfe3 940 fAntiLambdaAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
ca96d60a 941 fOutput->Add(fAntiLambdaAssocMassPtDCADaugEmbeded[i]);
942
943 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
9cb4cfe3 944 fAntiLambdaAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
ca96d60a 945 fOutput->Add(fAntiLambdaAssocMassPtCPAEmbeded[i]);
946
947 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
9cb4cfe3 948 fAntiLambdaAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
ca96d60a 949 fOutput->Add(fAntiLambdaAssocMassPtDCAPVEmbeded[i]);
950
ca96d60a 951 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
9cb4cfe3 952 fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
ca96d60a 953 fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
0aa4191c 954
955 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtShTPCclsEmbeded_Cent_%d",i);
956 fAntiLambdaAssocMassPtShTPCclsEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos fraction shared TPC Cls; Neg fraction shared TPC Cls;",5,binsEffALsh,xminEffALsh,xmaxEffALsh);
957 fOutput->Add(fAntiLambdaAssocMassPtShTPCclsEmbeded[i]);
958
959 }
ca96d60a 960
80c0bcd3 961 fAntiLambdaMCResEta = new TH3F("fAntiLambdaMCResEta","#bar{#Lambda} Assoc: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
b6f9da99 962 fOutput->Add(fAntiLambdaMCResEta);
59e0735e 963
80c0bcd3 964 fAntiLambdaMCResPhi = new TH3F("fAntiLambdaMCResPhi","#bar{#Lambda} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
348080d3 965 fOutput->Add(fAntiLambdaMCResPhi);
59e0735e 966
e5930cc2 967 fAntiLambdaMCResPt = new TH3F("fAntiLambdaMCResPt","#bar{#Lambda} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
968 fOutput->Add(fAntiLambdaMCResPt);
969
970 fAntiLambdaPosMCResEta = new TH3F("fAntiLambdaPosMCResEta","#bar{#Lambda} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
971 fOutput->Add(fAntiLambdaPosMCResEta);
972
973 fAntiLambdaPosMCResPhi = new TH3F("fAntiLambdaPosMCResPhi","#bar{#Lambda} Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
974 fOutput->Add(fAntiLambdaPosMCResPhi);
975
976 fAntiLambdaPosMCResPt = new TH3F("fAntiLambdaPosMCResPt","#bar{#Lambda} Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
977 fOutput->Add(fAntiLambdaPosMCResPt);
978
979 fAntiLambdaNegMCResEta = new TH3F("fAntiLambdaNegMCResEta","#bar{#Lambda} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
980 fOutput->Add(fAntiLambdaNegMCResEta);
981
982 fAntiLambdaNegMCResPhi = new TH3F("fAntiLambdaNegMCResPhi","#bar{#Lambda} Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
983 fOutput->Add(fAntiLambdaNegMCResPhi);
984
985 fAntiLambdaNegMCResPt = new TH3F("fAntiLambdaNegMCResPt","#bar{#Lambda} Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
986 fOutput->Add(fAntiLambdaNegMCResPt);
987
ca96d60a 988 } //End MC
667b678a 989
ca96d60a 990 // ======================================================== //
991 // ========== Reconstruction information in AOD =========== //
667b678a 992 fHistArmenterosPodolanski =
993 new TH3F("fHistArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",
ca96d60a 994 100,-1.0,1.0,50,0,0.5,7,-0.5,6.5);
59e0735e 995 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(1,"K^{0}_{S} Inv. Mass Peak");
996 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bckg");
997 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(3,"#Lambda Inv. Mass Peak");
998 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(4,"#Lambda Bckg");
999 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} Inv. Mass Peak");
1000 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bckg");
667b678a 1001 fOutput->Add(fHistArmenterosPodolanski);
ca96d60a 1002
667b678a 1003 fHistArmPodBckg =
773f3106 1004 new TH3F("fHistArmPodBckg","Armenteros-Podolanski phase space for correlations;#alpha;p_{t} arm",
1005 100,-1.0,1.0,50,0,0.5,6,-0.5,5.5);
1006 fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S} SigBck: Trig events");
1007 fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bck: Trig events");
1008 fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#Lambda SigBck: Trig events");
1009 fHistArmPodBckg->GetZaxis()->SetBinLabel(4,"#Lambda Bck: Trig events");
1010 fHistArmPodBckg->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} SigBck: Trig events");
1011 fHistArmPodBckg->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bck: Trig events");
667b678a 1012 fOutput->Add(fHistArmPodBckg);
ca96d60a 1013
667b678a 1014 // ****** K0s ******
ca96d60a 1015 fK0sMass =
80c0bcd3 1016 new TH3F("fK0sMass", "K^{0}_{s}: mass vs #it{p}_{T};Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});centrality",nbins,0.398,0.598,nbins,pMin,pMax,100,0.,100.);
667b678a 1017 fOutput->Add(fK0sMass);
ca96d60a 1018
1019 fK0sMassEmbeded =
80c0bcd3 1020 new TH3F("fK0sMassEmbeded", "K^{0}_{s} Embeded: mass vs #it{p}_{T}",nbins,0.398,0.598,nbins,pMin,pMax,100,0.,100.);
ca96d60a 1021 fK0sMassEmbeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1022 fK0sMassEmbeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
ca96d60a 1023 fK0sMassEmbeded->GetZaxis()->SetTitle("centrality");
1024 fOutput->Add(fK0sMassEmbeded);
667b678a 1025
0aa4191c 1026
80c0bcd3 1027 fK0sMassPtEta =
9cb4cfe3 1028 new TH3F("fK0sMassPtEta","K^{0}_{s}: Mass vs #it{p}_{T} vs #eta;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});#eta",
80c0bcd3 1029 nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
1030 fOutput->Add(fK0sMassPtEta);
ca96d60a 1031
3002fb0e 1032 for(Int_t i=0; i<kNCent; i++){
1033 fK0sMassPtRap[i] =
9cb4cfe3 1034 new TH3F(Form("fK0sMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"K^{0}_{s}: mass vs #it{p}_{T} vs y;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});y",
3002fb0e 1035 nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
1036 fOutput->Add(fK0sMassPtRap[i]);
1037 }
ca96d60a 1038
1039 fK0sMassPtPhi =
80c0bcd3 1040 new TH3F("fK0sMassPtPhi","K^{0}_{s}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
ca96d60a 1041 nbins,0.398,0.598,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
667b678a 1042 fOutput->Add(fK0sMassPtPhi);
ca96d60a 1043
0aa4191c 1044 // ----- Fraction of shared TPC cls
1045 fK0sPosDaugFracShTPCcls =
1046 new TH3F("fK0sPosDaugFracShTPCcls","K^{0}_{s}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1047 nbins,0.398,0.598,nbins,pMin,pMax,50,0,1.);
1048 fOutput->Add(fK0sPosDaugFracShTPCcls);
1049
1050 fK0sNegDaugFracShTPCcls =
1051 new TH3F("fK0sNegDaugFracShTPCcls","K^{0}_{s}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1052 nbins,0.398,0.598,nbins,pMin,pMax,50,0,1.);
1053 fOutput->Add(fK0sNegDaugFracShTPCcls);
1054
1055
773f3106 1056 // ================== Correlations =================
1057
478818ef 1058 // ------------------------ Splitting:
0e7d3472 1059 Double_t binsDev[121];
773f3106 1060 binsDev[0] = 0;
1061
0e7d3472 1062 for (Int_t k=-7;k<=4;k++)
773f3106 1063 for (Int_t j=1;j<=10;j++)
0e7d3472 1064 binsDev[(k+7)*10+j] = j*TMath::Power(10,k);
773f3106 1065
478818ef 1066 Int_t binsSplit[9] = {100,nbins,100,2,301,101,101,120,9}; Double_t xminSplit[9] = {pMin,0.398,pMin,-0.5,-0.001,-0.005,-0.005,0,-0.5}; Double_t xmaxSplit[9] = {pMax,0.598,pMax,1.5,0.3,1.005,1.005,10e+4,8.5};
1067
ce2d235a 1068 Int_t binsSplit2[14] = {100,nbins,100,2,10,20,101,101,100,120,99,99,99,2};
1069 Double_t xminSplit2[14] = {pMin,0.398,pMin,-0.5,0.,-0.1,-0.005,-0.005,-1.,0,0.,0.,0.,-0.5};
1070 Double_t xmaxSplit2[14] = {pMax,0.598,pMax,1.5,0.1,0.1,1.005,1.005,1.,10e+4,3.3,3.3,3.3,1.5};
e5930cc2 1071
1072 Int_t binsSplit3[6] = {100,nbins,100,46,46,2};
1073 Double_t xminSplit3[6] = {pMin,0.398,pMin,-0.16,-0.16,-0.5};
1074 Double_t xmaxSplit3[6] = {pMax,0.598,pMax,0.16,0.16,1.5};
773f3106 1075
478818ef 1076 for(Int_t j=0; j<kNCent; j++){
1077
1078 // positive daughter
1079 fK0sPosDaugSplCheckCovMat[j] = new THnSparseD( Form("fK0sPosDaugSplCheckCovMat_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1080 fK0sPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1081 fOutput->Add(fK0sPosDaugSplCheckCovMat[j]);
1082
1083 // negative daughter
cb30d9ae 1084 fK0sNegDaugSplCheckCovMat[j] = new THnSparseD( Form("fK0sNegDaugSplCheckCovMat_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1085 fK0sNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
478818ef 1086 fOutput->Add(fK0sNegDaugSplCheckCovMat[j]);
1087
1088 // Positive daughter:
ce2d235a 1089 fK0sPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fK0sPosDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; Trigger: DCA_{XY}; Trigger: DCA_{Z};same MC label;",14,binsSplit2,xminSplit2,xmaxSplit2);
e5930cc2 1090 fK0sPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
478818ef 1091 fOutput->Add(fK0sPosDaugdPhiSdEtaS[j]);
1092
1093 // Negative daughter:
ce2d235a 1094 fK0sNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fK0sNegDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; Trigger: DCA_{XY}; Trigger: DCA_{Z}; same MC label;",14,binsSplit2,xminSplit2,xmaxSplit2);
e5930cc2 1095 fK0sNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
478818ef 1096 fOutput->Add(fK0sNegDaugdPhiSdEtaS[j]);
1097
e5930cc2 1098 if(fIsMC){
1099 // Positive daughter:
1100 fK0sPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fK0sPosMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1101 fOutput->Add(fK0sPosMCResdEtaSdPhiS[j]);
1102
1103 // Negative daughter:
1104 fK0sNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fK0sNegMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1105 fOutput->Add(fK0sNegMCResdEtaSdPhiS[j]);
1106 }
1107
478818ef 1108 }
773f3106 1109
773f3106 1110
0aa4191c 1111 // ----- Fraction of shared TPC cls
1112 fK0sPosDaugFracShTPCclsTrig =
1113 new TH3F("fK0sPosDaugFracShTPCclsTrig","K^{0}_{s}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1114 nbins,0.398,0.598,nbins,pMin,pMax,50,0,1.);
1115 fOutput->Add(fK0sPosDaugFracShTPCclsTrig);
1116
1117 fK0sNegDaugFracShTPCclsTrig =
1118 new TH3F("fK0sNegDaugFracShTPCclsTrig","K^{0}_{s}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1119 nbins,0.398,0.598,nbins,pMin,pMax,50,0,1.);
1120 fOutput->Add(fK0sNegDaugFracShTPCclsTrig);
1121
1122
773f3106 1123 // DCA to prim vertex
667b678a 1124 fK0sDCADaugToPrimVtx
0e7d3472 1125 = new TH3F("fK0sDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l};DCA Pos daug (cm);DCA Neg daug (cm);#it{p}_{T,l} (GeV/#it{c})",
667b678a 1126 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
667b678a 1127 fOutput->Add(fK0sDCADaugToPrimVtx);
1128
348080d3 1129 // Spatial Resoltuion between trigger- and asosciated- particles
80c0bcd3 1130 fK0sSpatialRes = new TH3F("fK0sSpatialRes","K^{0}_{S}: Spatial resolution;#Delta#varphi (rad);trig-assoc. resolution (cm);dec. length (cm)",
348080d3 1131 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
1132 fOutput->Add(fK0sSpatialRes);
667b678a 1133
348080d3 1134 for(Int_t jj=0;jj<kNCent;jj++){
1135 for(Int_t k=0;k<kN1;k++){
1136
1137 // Monte-Carlo level:
1138 if(fIsMC){
fbaec09e 1139 snprintf(hNameHist,100, "fK0sdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
0e7d3472 1140 fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
348080d3 1141 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1142 nbinsdEta,-1.5,1.5,
1143 nbinsVtx,-10.,10.);
80c0bcd3 1144 fK0sdPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
348080d3 1145 fK0sdPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
1146 fK0sdPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
1147 fOutput->Add(fK0sdPhidEtaMC[jj*kN1+k]);
1148 }
1149
1150 // Reconstruction level:
44972668 1151 for(Int_t ll=0;ll<kNVtxZ;ll++){
1152 snprintf(hNameHist,100, "fK0sdPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
80c0bcd3 1153 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#varphi vs #Delta#eta vs Inv. Mass",
cb30d9ae 1154 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1155 nbinsdEta,-1.5,1.5,
1156 nbins,0.398,0.598);
80c0bcd3 1157 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
44972668 1158 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
1159 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
1160 fOutput->Add(fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
1161 }
348080d3 1162 }
667b678a 1163 }
348080d3 1164
667b678a 1165 // Correlations (side-band):
1166 fK0sBckgDecLength
0e7d3472 1167 = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. #it{p}_{T,l}",
667b678a 1168 100,0.,15.,nbinPtLP,pMin,ptMaxLP);
1169 fK0sBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
0e7d3472 1170 fK0sBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
667b678a 1171 fOutput->Add(fK0sBckgDecLength);
1172
1173 fK0sBckgDCADaugToPrimVtx
0e7d3472 1174 = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l}",
667b678a 1175 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1176 fK0sBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1177 fK0sBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
0e7d3472 1178 fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
667b678a 1179 fOutput->Add(fK0sBckgDCADaugToPrimVtx);
1180
1181 fK0sBckgEtaPhi =
80c0bcd3 1182 new TH2F("fK0sBckgEtaPhi","K^{0}_{s} Bckg: #varphi vs #eta",
667b678a 1183 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
80c0bcd3 1184 fK0sBckgEtaPhi->GetXaxis()->SetTitle("#varphi (rad)");
667b678a 1185 fK0sBckgEtaPhi->GetYaxis()->SetTitle("#eta");
1186 fOutput->Add(fK0sBckgEtaPhi);
1187
1188 fK0sBckgPhiRadio
80c0bcd3 1189 = new TH2F("fK0sBckgPhiRadio","K^{0}_{S} Bckg: #varphi vs l_{T}",
667b678a 1190 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
80c0bcd3 1191 fK0sBckgPhiRadio->GetXaxis()->SetTitle("#varphi (rad)");
667b678a 1192 fK0sBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
1193 fOutput->Add(fK0sBckgPhiRadio);
1194
1195 fK0sBckgDCANegDaugToPrimVtx
1196 = new TH2F("fK0sBckgDCANegDaugToPrimVtx","K^{0}_{S} Bckg: dca NegDaughter",
b6f9da99 1197 7,-0.5,6.5,90,0.,3.3);
667b678a 1198 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1199 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1200 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 1201 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1202 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1203 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1204 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1205 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 1206 fK0sBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
1207 fOutput->Add(fK0sBckgDCANegDaugToPrimVtx);
1208
1209 fK0sBckgDCAPosDaugToPrimVtx
1210 = new TH2F("fK0sBckgDCAPosDaugToPrimVtx","K^{0}_{S} Bckg: dca PosDaughter",
b6f9da99 1211 7,-0.5,6.5,90,0.,3.3);
667b678a 1212 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1213 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1214 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 1215 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1216 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1217 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1218 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1219 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 1220 fK0sBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
1221 fOutput->Add(fK0sBckgDCAPosDaugToPrimVtx);
1222
348080d3 1223 fV0MassCascade
1224 = new TH2F("fV0MassCascade","Cascade Reconstruction wi V0's candiates;Invariant Mass (GeV/c^{2});Cascade type",650, 1.2, 2.5,12,0.5,12.5);
1225 fOutput->Add(fV0MassCascade);
667b678a 1226
1227
1228 // ****** Lambda ******
1229 fLambdaMass =
80c0bcd3 1230 new TH3F("fLambdaMass","Mass vs #it{p}_{T} for \\Lambda",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
667b678a 1231 fLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1232 fLambdaMass->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
128e003c 1233 fLambdaMass->GetZaxis()->SetTitle("centrality");
667b678a 1234 fOutput->Add(fLambdaMass);
1235
ca96d60a 1236 fLambdaMassEmbeded =
80c0bcd3 1237 new TH3F("fLambdaMassEmbeded","Mass vs #it{p}_{T} for \\Lambda Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
ca96d60a 1238 fLambdaMassEmbeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1239 fLambdaMassEmbeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
ca96d60a 1240 fLambdaMassEmbeded->GetZaxis()->SetTitle("centrality");
1241 fOutput->Add(fLambdaMassEmbeded);
1242
1243 fLambdaMass2 =
80c0bcd3 1244 new TH3F("fLambdaMass2","Mass vs #it{p}_{T} for \\Lambda",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
ca96d60a 1245 fLambdaMass2->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1246 fLambdaMass2->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
ca96d60a 1247 fLambdaMass2->GetZaxis()->SetTitle("centrality");
1248 fOutput->Add(fLambdaMass2);
1249
1250 fLambdaMass2Embeded =
80c0bcd3 1251 new TH3F("fLambdaMass2Embeded","Mass vs #it{p}_{T} for \\Lambda Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
ca96d60a 1252 fLambdaMass2Embeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1253 fLambdaMass2Embeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
ca96d60a 1254 fLambdaMass2Embeded->GetZaxis()->SetTitle("centrality");
1255 fOutput->Add(fLambdaMass2Embeded);
1256
80c0bcd3 1257 fLambdaMassPtEta =
1258 new TH3F("fLambdaMassPtEta","\\Lambda: mass vs #it{p}_{T} vs #eta;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#eta",
1259 nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1260 fOutput->Add(fLambdaMassPtEta);
1261
3002fb0e 1262 for(Int_t i=0; i<kNCent; i++){
1263 fLambdaMassPtRap[i] =
1264 new TH3F(Form("fLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"\\Lambda: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",
1265 nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1266 fOutput->Add(fLambdaMassPtRap[i]);
1267 }
667b678a 1268
59e0735e 1269 fLambdaMassPtPhi =
80c0bcd3 1270 new TH3F("fLambdaMassPtPhi","#Lambda: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
59e0735e 1271 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
667b678a 1272 fOutput->Add(fLambdaMassPtPhi);
1273
0aa4191c 1274
1275 // ----- Fraction of shared TPC cls
1276 fLambdaPosDaugFracShTPCcls =
1277 new TH3F("fLambdaPosDaugFracShTPCcls","#Lambda: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1278 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1279 fOutput->Add(fLambdaPosDaugFracShTPCcls);
1280
1281 fLambdaNegDaugFracShTPCcls =
1282 new TH3F("fLambdaNegDaugFracShTPCcls","#Lambda: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1283 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1284 fOutput->Add(fLambdaNegDaugFracShTPCcls);
1285
1286
1287
773f3106 1288 // ================== Correlations =================
1289
1290 // ----------------Splitting:
e5930cc2 1291 xminSplit[1] = 1.065; xmaxSplit[1] = 1.165;
1292 xminSplit2[1] = 1.065; xmaxSplit2[1] = 1.165;
1293 xminSplit3[1] = 1.065; xmaxSplit3[1] = 1.165;
81c9e762 1294
1295 for(Int_t j=0; j<kNCent; j++){
478818ef 1296
1297 // positive daughter:
1298 fLambdaPosDaugSplCheckCovMat[j] = new THnSparseD( Form("fLambdaPosDaugSplCheckCovMat_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1299 fLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1300 fOutput->Add(fLambdaPosDaugSplCheckCovMat[j]);
1301
1302 // negative daughter:
1303 fLambdaNegDaugSplCheckCovMat[j] = new THnSparseD( Form("fLambdaNegDaugSplCheckCovMat_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1304 fLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1305 fOutput->Add(fLambdaNegDaugSplCheckCovMat[j]);
1306
81c9e762 1307 // Positive daughter:
ce2d235a 1308 fLambdaPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fLambdaPosDaugdPhiSdEtaS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; Trigger: DCA_{XY}; Trigger: DCA_{Z}; same MC label;",14,binsSplit2,xminSplit2,xmaxSplit2);
e5930cc2 1309 fLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
81c9e762 1310 fOutput->Add(fLambdaPosDaugdPhiSdEtaS[j]);
1311
1312 // Negative daughter:
ce2d235a 1313 fLambdaNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fLambdaNegDaugdPhiSdEtaS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; Trigger: DCA_{XY}; Trigger: DCA_{Z}; same MC label;",14,binsSplit2,xminSplit2,xmaxSplit2);
e5930cc2 1314 fLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
81c9e762 1315 fOutput->Add(fLambdaNegDaugdPhiSdEtaS[j]);
81c9e762 1316
e5930cc2 1317 if(fIsMC){
1318 // Positive daughter:
1319 fLambdaPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fLambdaPosMCResdEtaSdPhiS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1320 fOutput->Add(fLambdaPosMCResdEtaSdPhiS[j]);
1321
1322 // Negative daughter:
1323 fLambdaNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fLambdaNegMCResdEtaSdPhiS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1324 fOutput->Add(fLambdaNegMCResdEtaSdPhiS[j]);
1325 }
1326
1327 }
773f3106 1328
773f3106 1329
0aa4191c 1330 // ----- Fraction of shared TPC cls
1331 fLambdaPosDaugFracShTPCclsTrig =
1332 new TH3F("fLambdaPosDaugFracShTPCclsTrig","#Lambda: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1333 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1334 fOutput->Add(fLambdaPosDaugFracShTPCclsTrig);
1335
1336 fLambdaNegDaugFracShTPCclsTrig =
1337 new TH3F("fLambdaNegDaugFracShTPCclsTrig","#Lambda: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1338 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1339 fOutput->Add(fLambdaNegDaugFracShTPCclsTrig);
1340
1341
773f3106 1342 // DCA to prim vertex
667b678a 1343 fLambdaDCADaugToPrimVtx
0e7d3472 1344 = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
667b678a 1345 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1346 fLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1347 fLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
0e7d3472 1348 fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
667b678a 1349 fOutput->Add(fLambdaDCADaugToPrimVtx);
1350
348080d3 1351 // Spatial Resoltuion between trigger- and asosciated- particles
80c0bcd3 1352 fLambdaSpatialRes = new TH3F("fLambdaSpatialRes","#Lambda: Spatial resolution;#Delta#varphi (rad);trig-assoc. resolution (cm);dec. length (cm)",
348080d3 1353 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
1354 fOutput->Add(fLambdaSpatialRes);
1355
1356
1357 for(Int_t jj=0;jj<kNCent;jj++){
1358 for(Int_t k=0;k<kN1;k++){
1359
1360 // Monte-Carlo level:
1361 if(fIsMC){
fbaec09e 1362 snprintf(hNameHist,100, "fLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
0e7d3472 1363 fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
348080d3 1364 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1365 nbinsdEta,-1.5,1.5,
1366 nbinsVtx,-10.,10.);
80c0bcd3 1367 fLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
348080d3 1368 fLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
1369 fLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
1370 fOutput->Add(fLambdadPhidEtaMC[jj*kN1+k]);
1371 }
667b678a 1372
348080d3 1373 // Reconstruction level:
44972668 1374 for(Int_t ll=0;ll<kNVtxZ;ll++){
1375 snprintf(hNameHist,100, "fLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
0e7d3472 1376 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
44972668 1377 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1378 nbinsdEta,-1.5,1.5,
1379 nbins,1.065,1.165);
80c0bcd3 1380 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
44972668 1381 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
1382 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
1383 fOutput->Add(fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
1384 }
348080d3 1385 }
667b678a 1386 }
667b678a 1387
1388 // Correlations (side-band):
1389 fLambdaBckgDecLength
0e7d3472 1390 = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. #it{p}_{T,l}",
667b678a 1391 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
1392 fLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
0e7d3472 1393 fLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
667b678a 1394 fOutput->Add(fLambdaBckgDecLength);
1395
1396 fLambdaBckgDCADaugToPrimVtx
0e7d3472 1397 = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
667b678a 1398 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1399 fLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1400 fLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
0e7d3472 1401 fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
667b678a 1402 fOutput->Add(fLambdaBckgDCADaugToPrimVtx);
1403
1404 fLambdaBckgEtaPhi =
80c0bcd3 1405 new TH2F("fLambdaBckgEtaPhi","#Lambda Bckg: #varphi vs #eta",
667b678a 1406 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
80c0bcd3 1407 fLambdaBckgEtaPhi->GetXaxis()->SetTitle("#varphi (rad)");
667b678a 1408 fLambdaBckgEtaPhi->GetYaxis()->SetTitle("#eta");
1409 fOutput->Add(fLambdaBckgEtaPhi);
1410
1411 fLambdaBckgPhiRadio
80c0bcd3 1412 = new TH2F("fLambdaBckgPhiRadio","#Lambda Bckg: #varphi vs l_{T}",
667b678a 1413 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
80c0bcd3 1414 fLambdaBckgPhiRadio->GetXaxis()->SetTitle("#varphi (rad)");
667b678a 1415 fLambdaBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
1416 fOutput->Add(fLambdaBckgPhiRadio);
1417
1418
1419 fLambdaBckgDCANegDaugToPrimVtx
1420 = new TH2F("fLambdaBckgDCANegDaugToPrimVtx","#Lambda Bckg: dca NegDaughter",
b6f9da99 1421 7,-0.5,6.5,90,0.,3.3);
667b678a 1422 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1423 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1424 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 1425 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1426 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1427 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1428 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1429 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 1430 fLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
1431 fOutput->Add(fLambdaBckgDCANegDaugToPrimVtx);
1432
1433
1434 fLambdaBckgDCAPosDaugToPrimVtx
1435 = new TH2F("fLambdaBckgDCAPosDaugToPrimVtx","#Lambda Bckg: dca PosDaughter",
b6f9da99 1436 7,-0.5,6.5,90,0.,3.3);
667b678a 1437 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1438 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1439 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 1440 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1441 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1442 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1443 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1444 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 1445 fLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
1446 fOutput->Add(fLambdaBckgDCAPosDaugToPrimVtx);
1447
1448
59e0735e 1449 // ****** AntiLambda ******
1450 fAntiLambdaMass =
80c0bcd3 1451 new TH3F("fAntiLambdaMass","Mass vs #it{p}_{T} for #bar{#Lambda}",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
59e0735e 1452 fAntiLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1453 fAntiLambdaMass->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
128e003c 1454 fAntiLambdaMass->GetZaxis()->SetTitle("centrality");
59e0735e 1455 fOutput->Add(fAntiLambdaMass);
1456
ca96d60a 1457 fAntiLambdaMassEmbeded =
80c0bcd3 1458 new TH3F("fAntiLambdaMassEmbeded","Mass vs #it{p}_{T} for #bar{#Lambda} Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
ca96d60a 1459 fAntiLambdaMassEmbeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1460 fAntiLambdaMassEmbeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
ca96d60a 1461 fAntiLambdaMassEmbeded->GetZaxis()->SetTitle("centrality");
1462 fOutput->Add(fAntiLambdaMassEmbeded);
1463
1464 fAntiLambdaMass2 =
80c0bcd3 1465 new TH3F("fAntiLambdaMass2","Mass vs #it{p}_{T} for #bar{#Lambda}",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
ca96d60a 1466 fAntiLambdaMass2->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1467 fAntiLambdaMass2->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
ca96d60a 1468 fAntiLambdaMass2->GetZaxis()->SetTitle("centrality");
1469 fOutput->Add(fAntiLambdaMass2);
1470
1471 fAntiLambdaMass2Embeded =
80c0bcd3 1472 new TH3F("fAntiLambdaMass2Embeded","Mass vs #it{p}_{T} for #bar{#Lambda} Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
ca96d60a 1473 fAntiLambdaMass2Embeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
80c0bcd3 1474 fAntiLambdaMass2Embeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
ca96d60a 1475 fAntiLambdaMass2Embeded->GetZaxis()->SetTitle("centrality");
1476 fOutput->Add(fAntiLambdaMass2Embeded);
1477
80c0bcd3 1478 fAntiLambdaMassPtEta =
1479 new TH3F("fAntiLambdaMassPtEta","#bar{#Lambda}: mass vs #it{p}_{T} vs #eta;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#eta",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1480 fOutput->Add(fAntiLambdaMassPtEta);
1481
3002fb0e 1482 for(Int_t i=0; i<kNCent; i++){
1483 fAntiLambdaMassPtRap[i] =
1484 new TH3F(Form("fAntiLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"#bar{#Lambda}: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1485 fOutput->Add(fAntiLambdaMassPtRap[i]);
1486 }
59e0735e 1487
348080d3 1488 fAntiLambdaMassPtPhi =
80c0bcd3 1489 new TH3F("fAntiLambdaMassPtPhi","#bar{#Lambda}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
59e0735e 1490 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
59e0735e 1491 fOutput->Add(fAntiLambdaMassPtPhi);
1492
0aa4191c 1493 fAntiLambdaPosDaugFracShTPCcls =
1494 new TH3F("fAntiLambdaPosDaugFracShTPCcls","#bar{#Lambda}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1495 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1496 fOutput->Add(fAntiLambdaPosDaugFracShTPCcls);
1497
1498 fAntiLambdaNegDaugFracShTPCcls =
1499 new TH3F("fAntiLambdaNegDaugFracShTPCcls","#bar{#Lambda}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1500 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1501 fOutput->Add(fAntiLambdaNegDaugFracShTPCcls);
59e0735e 1502
773f3106 1503
1504 // ================== Correlations =================
1505
1506 // ----------------Splitting:
81c9e762 1507 for(Int_t j=0; j<kNCent; j++){
478818ef 1508
1509 // positive daughter:
1510 fAntiLambdaPosDaugSplCheckCovMat[j] = new THnSparseD(Form("fAntiLambdaPosDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1511 fAntiLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1512 fOutput->Add(fAntiLambdaPosDaugSplCheckCovMat[j]);
1513
1514 // negative daughter:
1515 fAntiLambdaNegDaugSplCheckCovMat[j] = new THnSparseD(Form("fAntiLambdaNegDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1516 fAntiLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1517 fOutput->Add(fAntiLambdaNegDaugSplCheckCovMat[j]);
1518
81c9e762 1519 // Positive daughter:
ce2d235a 1520 fAntiLambdaPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fAntiLambdaPosDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; Trigger: DCA_{XY}; Trigger: DCA_{Z}; same MC label;",14,binsSplit2,xminSplit2,xmaxSplit2);
e5930cc2 1521 fAntiLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1522 fOutput->Add(fAntiLambdaPosDaugdPhiSdEtaS[j]);
81c9e762 1523
1524 // Negative daughter:
ce2d235a 1525 fAntiLambdaNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fAntiLambdaNegDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; Trigger: DCA_{XY}; Trigger: DCA_{Z}; same MC label;",14,binsSplit2,xminSplit2,xmaxSplit2);
e5930cc2 1526 fAntiLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1527 fOutput->Add(fAntiLambdaNegDaugdPhiSdEtaS[j]);
1528
1529 if(fIsMC){
1530 // Positive daughter:
1531 fAntiLambdaPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fAntiLambdaPosMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1532 fOutput->Add(fAntiLambdaPosMCResdEtaSdPhiS[j]);
1533
1534 // Negative daughter:
1535 fAntiLambdaNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fAntiLambdaNegMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1536 fOutput->Add(fAntiLambdaNegMCResdEtaSdPhiS[j]);
1537 }
1538
81c9e762 1539 }
773f3106 1540
478818ef 1541
0aa4191c 1542 // ----- Fraction of shared TPC cls
1543 fAntiLambdaPosDaugFracShTPCclsTrig =
1544 new TH3F("fAntiLambdaPosDaugFracShTPCclsTrig","#bar{#Lambda}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1545 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1546 fOutput->Add(fAntiLambdaPosDaugFracShTPCclsTrig);
1547
1548 fAntiLambdaNegDaugFracShTPCclsTrig =
1549 new TH3F("fAntiLambdaNegDaugFracShTPCclsTrig","#bar{#Lambda}: mass vs #it{p}_{T} vs fraction Shared TPC cls;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});fraction Shared TPC cls",
1550 nbins,1.065,1.165,nbins,pMin,pMax,50,0,1.);
1551 fOutput->Add(fAntiLambdaNegDaugFracShTPCclsTrig);
1552
773f3106 1553
1554 // DCA to prim vertex
59e0735e 1555 fAntiLambdaDCADaugToPrimVtx
0e7d3472 1556 = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
59e0735e 1557 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1558 fAntiLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1559 fAntiLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
0e7d3472 1560 fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
59e0735e 1561 fOutput->Add(fAntiLambdaDCADaugToPrimVtx);
1562
348080d3 1563 // Spatial Resoltuion between trigger- and asosciated- particles
80c0bcd3 1564 fAntiLambdaSpatialRes = new TH3F("fAntiLambdaSpatialRes","#bar{#Lambda}: Spatial resolution;#Delta#varphi (rad);trig-assoc. resolution (cm);dec. length (cm)",
348080d3 1565 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
1566 fOutput->Add(fAntiLambdaSpatialRes);
1567
1568 for(Int_t jj=0;jj<kNCent;jj++){
1569 for(Int_t k=0;k<kN1;k++){
1570
1571 // Monte-Carlo level:
1572 if(fIsMC){
fbaec09e 1573 snprintf(hNameHist,100, "fAntiLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
0e7d3472 1574 fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
348080d3 1575 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1576 nbinsdEta,-1.5,1.5,
1577 nbinsVtx,-10.,10.);
80c0bcd3 1578 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
348080d3 1579 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
1580 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
1581 fOutput->Add(fAntiLambdadPhidEtaMC[jj*kN1+k]);
1582 }
59e0735e 1583
348080d3 1584 // Reconstruction level:
44972668 1585 for(Int_t ll=0;ll<kNVtxZ;ll++){
1586 snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
0e7d3472 1587 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
44972668 1588 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1589 nbinsdEta,-1.5,1.5,
1590 nbins,1.065,1.165);
80c0bcd3 1591 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
44972668 1592 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
1593 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
1594 fOutput->Add(fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
1595 }
348080d3 1596 }
59e0735e 1597 }
59e0735e 1598
1599 // Correlations (side-band):
1600 fAntiLambdaBckgDecLength
0e7d3472 1601 = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. #it{p}_{T,l}",
59e0735e 1602 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
1603 fAntiLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
0e7d3472 1604 fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
59e0735e 1605 fOutput->Add(fAntiLambdaBckgDecLength);
1606
1607 fAntiLambdaBckgDCADaugToPrimVtx
0e7d3472 1608 = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
59e0735e 1609 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1610 fAntiLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1611 fAntiLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
0e7d3472 1612 fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
59e0735e 1613 fOutput->Add(fAntiLambdaBckgDCADaugToPrimVtx);
1614
1615 fAntiLambdaBckgEtaPhi =
80c0bcd3 1616 new TH2F("fAntiLambdaBckgEtaPhi","#bar{#Lambda} Bckg: #varphi vs #eta;#varphi (rad);l_{T} (cm)",
59e0735e 1617 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
59e0735e 1618 fOutput->Add(fAntiLambdaBckgEtaPhi);
1619
1620 fAntiLambdaBckgPhiRadio
80c0bcd3 1621 = new TH2F("fAntiLambdaBckgPhiRadio","#bar{#Lambda} Bckg: #varphi vs l_{T};#varphi (rad);l_{T} (cm)",
59e0735e 1622 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
59e0735e 1623 fOutput->Add(fAntiLambdaBckgPhiRadio);
1624
1625
1626 fAntiLambdaBckgDCANegDaugToPrimVtx
1627 = new TH2F("fAntiLambdaBckgDCANegDaugToPrimVtx","#bar{#Lambda} Bckg: dca NegDaughter",
b6f9da99 1628 7,-0.5,6.5,90,0.,3.3);
59e0735e 1629 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1630 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1631 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 1632 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1633 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1634 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1635 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1636 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
59e0735e 1637 fAntiLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
1638 fOutput->Add(fAntiLambdaBckgDCANegDaugToPrimVtx);
1639
1640
1641 fAntiLambdaBckgDCAPosDaugToPrimVtx
1642 = new TH2F("fAntiLambdaBckgDCAPosDaugToPrimVtx","#bar{#Lambda} Bckg: dca PosDaughter",
b6f9da99 1643 7,-0.5,6.5,90,0.,3.3);
59e0735e 1644 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1645 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1646 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 1647 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1648 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1649 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1650 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1651 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
59e0735e 1652 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
1653 fOutput->Add(fAntiLambdaBckgDCAPosDaugToPrimVtx);
1654
59e0735e 1655
348080d3 1656 // ============================================================= //
1657
1658 // K0s in ME:
1659 for(Int_t ll=0;ll<kNCent;ll++){
1660 for(Int_t k=0;k<kN1;k++){
1661 for(Int_t j=0;j<kNVtxZ;j++){
1662
fbaec09e 1663 snprintf(hNameHist,100,"fK0sdPhidEtaME_%.2f_%.2f_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
0aa4191c 1664 fK0sdPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#varphi vs #Delta#eta in ME;#Delta#varphi (rad);#Delta#eta",
348080d3 1665 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
0aa4191c 1666 nbinsdEta,-1.5,1.5,nbins,0.398,0.598);
348080d3 1667 fOutputME->Add(fK0sdPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1668 }
1669 }
1670 }
1671
1672 // Lambda in ME:
1673 for(Int_t ll=0;ll<kNCent;ll++){
1674 for(Int_t k=0;k<kN1;k++){
1675 for(Int_t j=0;j<kNVtxZ;j++){
1676
fbaec09e 1677 snprintf(hNameHist,100,"fLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
0aa4191c 1678 fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH3F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta in ME;#Delta#varphi (rad);#Delta#eta",
348080d3 1679 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
0aa4191c 1680 nbinsdEta,-1.5,1.5,nbins,1.065,1.165);
348080d3 1681 fOutputME->Add(fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1682 }
1683 }
1684 }
1685
1686 // AntiLambda in ME:
1687 for(Int_t ll=0;ll<kNCent;ll++){
1688 for(Int_t k=0;k<kN1;k++){
1689 for(Int_t j=0;j<kNVtxZ;j++){
1690
fbaec09e 1691 snprintf(hNameHist,100,"fAntiLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
0aa4191c 1692 fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta in ME;#Delta#varphi (rad);#Delta#eta",
348080d3 1693 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
0aa4191c 1694 nbinsdEta,-1.5,1.5,nbins,1.065,1.165);
348080d3 1695 fOutputME->Add(fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1696 }
1697 }
1698 }
1699
1700
6668159e 1701 // ============================================================= //
1702
1703 if(fDoQA){
1704
ca96d60a 1705 // ----------------------------
6668159e 1706 // Quality Assurance K0s:
6668159e 1707
ca96d60a 1708 // Transverse momentum:
1709 // --- signal ---
1710 fK0sPtPosDaug =
80c0bcd3 1711 new TH2F("fK0sPtPosDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1712 fOutputQA->Add(fK0sPtPosDaug);
6668159e 1713
ca96d60a 1714 fK0sPtNegDaug =
80c0bcd3 1715 new TH2F("fK0sPtNegDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1716 fOutputQA->Add(fK0sPtNegDaug);
6668159e 1717
ca96d60a 1718 // --- background ---
1719 fK0sBckgPtPosDaug =
80c0bcd3 1720 new TH2F("fK0sBckgPtPosDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1721 fOutputQA->Add(fK0sBckgPtPosDaug);
1722
1723 fK0sBckgPtNegDaug =
80c0bcd3 1724 new TH2F("fK0sBckgPtNegDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1725 fOutputQA->Add(fK0sBckgPtNegDaug);
6668159e 1726
1727 // Phi Eta
1728 // --- signal ---
1729 fK0sPhiEtaPosDaug =
80c0bcd3 1730 new TH3F("fK0sPhiEtaPosDaug","K^{0}_{S}: #varphi vs #eta Pos. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1731 fOutputQA->Add(fK0sPhiEtaPosDaug);
1732
1733 fK0sPhiEtaNegDaug =
80c0bcd3 1734 new TH3F("fK0sPhiEtaNegDaug","K^{0}_{S}: #varphi vs #eta Neg. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1735 fOutputQA->Add(fK0sPhiEtaNegDaug);
1736
1737 // --- background ---
1738 fK0sBckgPhiEtaPosDaug =
80c0bcd3 1739 new TH3F("fK0sBckgPhiEtaPosDaug","K^{0}_{S} Bckg: #varphi vs #eta Pos. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1740 fOutputQA->Add(fK0sBckgPhiEtaPosDaug);
1741
1742 fK0sBckgPhiEtaNegDaug =
80c0bcd3 1743 new TH3F("fK0sBckgPhiEtaNegDaug","K^{0}_{S} Bckg: #varphi vs #eta Neg. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1744 fOutputQA->Add(fK0sBckgPhiEtaNegDaug);
1745
59e0735e 1746 // Distance of closest approach:
6668159e 1747 // --- signal ---
1748 fK0sDCAPosDaug =
80c0bcd3 1749 new TH2F("fK0sDCAPosDaug","K^{0}_{S}: dca Pos;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
6668159e 1750 fOutputQA->Add(fK0sDCAPosDaug);
1751
1752 fK0sDCANegDaug =
80c0bcd3 1753 new TH2F("fK0sDCANegDaug","K^{0}_{S}: dca Neg;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
6668159e 1754 fOutputQA->Add(fK0sDCANegDaug);
1755
1756 // --- background ---
1757 fK0sBckgDCAPosDaug =
80c0bcd3 1758 new TH2F("fK0sBckgDCAPosDaug","K^{0}_{S} Bckg: dca Pos;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
6668159e 1759 fOutputQA->Add(fK0sBckgDCAPosDaug);
1760
1761 fK0sBckgDCANegDaug =
80c0bcd3 1762 new TH2F("fK0sBckgDCANegDaug","K^{0}_{S} Bckg: dca Neg;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
6668159e 1763 fOutputQA->Add(fK0sBckgDCANegDaug);
1764
59e0735e 1765 // Decay vertex reconstruction:
6668159e 1766 // --- signal ---
1767 fK0sDecayPos =
1768 new TH3F("fK0sDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1769 fK0sDecayPos->GetXaxis()->SetTitle("Pos. X");
1770 fK0sDecayPos->GetYaxis()->SetTitle("Pos. Y");
80c0bcd3 1771 fK0sDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1772 fOutputQA->Add(fK0sDecayPos);
1773
1774 fK0sDecayVertex =
348080d3 1775 new TH2F("fK0sDecayVertex","K^{0}_{S}: decay length",100,0.,100.,nbins,pMin,pMax);
6668159e 1776 fK0sDecayVertex->GetXaxis()->SetTitle("l_{T}");
80c0bcd3 1777 fK0sDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1778 fOutputQA->Add(fK0sDecayVertex);
1779
6668159e 1780 // --- background ---
1781 fK0sBckgDecayPos =
1782 new TH3F("fK0sBckgDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1783 fK0sBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1784 fK0sBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
80c0bcd3 1785 fK0sBckgDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1786 fOutputQA->Add(fK0sBckgDecayPos);
1787
1788 fK0sBckgDecayVertex =
1789 new TH2F("fK0sBckgDecayVertex","K^{0}_{S} Bckg: decay vertex",100,0.,100.,nbins,pMin,pMax);
1790 fK0sBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
80c0bcd3 1791 fK0sBckgDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1792 fOutputQA->Add(fK0sBckgDecayVertex);
1793
59e0735e 1794 // Cosine of the Pointing Angle:
6668159e 1795 // --- signal ---
1796 fK0sCPA =
b6f9da99 1797 new TH2F("fK0sCPA","K^{0}_{S}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1798 fK0sCPA->GetXaxis()->SetTitle("cpa");
80c0bcd3 1799 fK0sCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1800 fOutputQA->Add(fK0sCPA);
1801 // --- background ---
1802 fK0sBckgCPA =
b6f9da99 1803 new TH2F("fK0sBckgCPA","K^{0}_{S} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1804 fK0sBckgCPA->GetXaxis()->SetTitle("cpa");
80c0bcd3 1805 fK0sBckgCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1806 fOutputQA->Add(fK0sBckgCPA);
1807
59e0735e 1808 // DCA between daughters:
6668159e 1809 // --- signal ---
1810 fK0sDCAV0Daug =
1811 new TH2F("fK0sDCAV0Daug","K^{0}_{S}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1812 fK0sDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
80c0bcd3 1813 fK0sDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1814 fOutputQA->Add(fK0sDCAV0Daug);
1815 // --- background ---
1816 fK0sBckgDCAV0Daug =
1817 new TH2F("fK0sBckgDCAV0Daug","K^{0}_{S} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1818 fK0sBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
80c0bcd3 1819 fK0sBckgDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1820 fOutputQA->Add(fK0sBckgDCAV0Daug);
1821
59e0735e 1822 // Number of TPC clusters:
1823 // --- signal ---
31f87a49 1824 fK0sNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
9cb4cfe3 1825 new TH3F("fK0sNClustersTPC","K^{0}_{S};#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
59e0735e 1826 fOutputQA->Add(fK0sNClustersTPC);
1827 // --- background ---
31f87a49 1828 fK0sBckgNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
9cb4cfe3 1829 new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
59e0735e 1830 fOutputQA->Add(fK0sBckgNClustersTPC);
1831
1832 // Number of ITS clusters:
1833 // --- signal ---
1834 fK0sNClustersITSPos =
80c0bcd3 1835 new TH3F("fK0sNClustersITSPos","K^{0}_{S}: Pos. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 1836 fOutputQA->Add(fK0sNClustersITSPos);
1837
1838 fK0sNClustersITSNeg =
80c0bcd3 1839 new TH3F("fK0sNClustersITSNeg","K^{0}_{S}: Neg. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 1840 fOutputQA->Add(fK0sNClustersITSNeg);
1841 // --- background ---
1842 fK0sBckgNClustersITSPos =
80c0bcd3 1843 new TH3F("fK0sBckgNClustersITSPos","K^{0}_{S} Bckg: Pos. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 1844 fOutputQA->Add(fK0sBckgNClustersITSPos);
1845
1846 fK0sBckgNClustersITSNeg =
80c0bcd3 1847 new TH3F("fK0sBckgNClustersITSNeg","K^{0}_{S} Bckg: Neg. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 1848 fOutputQA->Add(fK0sBckgNClustersITSNeg);
1849
ca96d60a 1850 // ----------------------------
6668159e 1851 // Quality Assurance Lambda:
ca96d60a 1852
1853 // Transverse momentum:
1854 // --- signal ---
1855 fLambdaPtPosDaug =
80c0bcd3 1856 new TH2F("fLambdaPtPosDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1857 fOutputQA->Add(fLambdaPtPosDaug);
1858
1859 fLambdaPtNegDaug =
80c0bcd3 1860 new TH2F("fLambdaPtNegDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1861 fOutputQA->Add(fLambdaPtNegDaug);
1862
1863 // --- background ---
1864 fLambdaBckgPtPosDaug =
80c0bcd3 1865 new TH2F("fLambdaBckgPtPosDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1866 fOutputQA->Add(fLambdaBckgPtPosDaug);
1867
1868 fLambdaBckgPtNegDaug =
80c0bcd3 1869 new TH2F("fLambdaBckgPtNegDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 1870 fOutputQA->Add(fLambdaBckgPtNegDaug);
6668159e 1871
1872 // Phi Eta
1873 // --- signal ---
1874 fLambdaPhiEtaPosDaug =
80c0bcd3 1875 new TH3F("fLambdaPhiEtaPosDaug","#Lambda: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1876 fLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
6668159e 1877 fLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 1878 fLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1879 fOutputQA->Add(fLambdaPhiEtaPosDaug);
1880
1881 fLambdaPhiEtaNegDaug =
80c0bcd3 1882 new TH3F("fLambdaPhiEtaNegDaug","#Lambda: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1883 fLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
6668159e 1884 fLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 1885 fLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1886 fOutputQA->Add(fLambdaPhiEtaNegDaug);
1887
1888 // --- background ---
1889 fLambdaBckgPhiEtaPosDaug =
80c0bcd3 1890 new TH3F("fLambdaBckgPhiEtaPosDaug","#Lambda: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1891 fLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
6668159e 1892 fLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 1893 fLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1894 fOutputQA->Add(fLambdaBckgPhiEtaPosDaug);
1895
1896 fLambdaBckgPhiEtaNegDaug =
80c0bcd3 1897 new TH3F("fLambdaBckgPhiEtaNegDaug","#Lambda: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1898 fLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
6668159e 1899 fLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 1900 fLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1901 fOutputQA->Add(fLambdaBckgPhiEtaNegDaug);
1902
1903 // Distance of closest approach
1904 // --- signal ---
1905 fLambdaDCAPosDaug =
e280e70b 1906 new TH2F("fLambdaDCAPosDaug","#Lambda: dca Pos",66,0.,3.3,nbins,pMin,pMax);
6668159e 1907 fLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 1908 fLambdaDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1909 fOutputQA->Add(fLambdaDCAPosDaug);
1910
1911 fLambdaDCANegDaug =
e280e70b 1912 new TH2F("fLambdaDCANegDaug","#Lambda: dca Neg",66,0.,3.3,nbins,pMin,pMax);
6668159e 1913 fLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 1914 fLambdaDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1915 fOutputQA->Add(fLambdaDCANegDaug);
1916
1917 // --- background ---
1918 fLambdaBckgDCAPosDaug =
e280e70b 1919 new TH2F("fLambdaBckgDCAPosDaug","#Lambda Bckg: dca Pos",66,0.,3.3,nbins,pMin,pMax);
6668159e 1920 fLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 1921 fLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1922 fOutputQA->Add(fLambdaBckgDCAPosDaug);
1923
1924 fLambdaBckgDCANegDaug =
e280e70b 1925 new TH2F("fLambdaBckgDCANegDaug","#Lambda Bckg: dca Neg",66,0.,3.3,nbins,pMin,pMax);
6668159e 1926 fLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 1927 fLambdaBckgDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1928 fOutputQA->Add(fLambdaBckgDCANegDaug);
1929
6668159e 1930
1931 // Decay vertex reconstruction
1932 // --- signal ---
1933 fLambdaDecayPos =
1934 new TH3F("fLambdaDecayPos","#Lambda: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1935 fLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
1936 fLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
80c0bcd3 1937 fLambdaDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1938 fOutputQA->Add(fLambdaDecayPos);
1939
1940 fLambdaDecayVertex =
348080d3 1941 new TH2F("fLambdaDecayVertex","#Lambda: decay length",100,0.,100.,nbins,pMin,pMax);
6668159e 1942 fLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
80c0bcd3 1943 fLambdaDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1944 fOutputQA->Add(fLambdaDecayVertex);
1945
6668159e 1946 // --- background ---
1947 fLambdaBckgDecayPos =
1948 new TH3F("fLambdaBckgDecayPos","#Lambda Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1949 fLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1950 fLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
80c0bcd3 1951 fLambdaBckgDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1952 fOutputQA->Add(fLambdaBckgDecayPos);
1953
1954 fLambdaBckgDecayVertex =
348080d3 1955 new TH2F("fLambdaBckgDecayVertex","#Lambda Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
6668159e 1956 fLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
80c0bcd3 1957 fLambdaBckgDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1958 fOutputQA->Add(fLambdaBckgDecayVertex);
1959
6668159e 1960 // Cosine of the Pointing Angle
1961 // --- signal ---
1962 fLambdaCPA =
b6f9da99 1963 new TH2F("fLambdaCPA","#Lambda: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1964 fLambdaCPA->GetXaxis()->SetTitle("cpa");
80c0bcd3 1965 fLambdaCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1966 fOutputQA->Add(fLambdaCPA);
1967 // --- background ---
1968 fLambdaBckgCPA =
b6f9da99 1969 new TH2F("fLambdaBckgCPA","#Lambda Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1970 fLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
80c0bcd3 1971 fLambdaBckgCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1972 fOutputQA->Add(fLambdaBckgCPA);
1973
1974 // DCA between daughters
1975 // --- signal ---
1976 fLambdaDCAV0Daug =
1977 new TH2F("fLambdaDCAV0Daug","#Lambda: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1978 fLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
80c0bcd3 1979 fLambdaDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1980 fOutputQA->Add(fLambdaDCAV0Daug);
1981 // --- background ---
1982 fLambdaBckgDCAV0Daug =
1983 new TH2F("fLambdaBckgDCAV0Daug","#Lambda Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1984 fLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
80c0bcd3 1985 fLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
6668159e 1986 fOutputQA->Add(fLambdaBckgDCAV0Daug);
59e0735e 1987
1988 // Number of TPC clusters:
1989 // --- signal ---
1990 fLambdaNClustersTPC =
9cb4cfe3 1991 new TH3F("fLambdaNClustersTPC","#Lambda;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
59e0735e 1992 fOutputQA->Add(fLambdaNClustersTPC);
1993 // --- background ---
1994 fLambdaBckgNClustersTPC =
9cb4cfe3 1995 new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
59e0735e 1996 fOutputQA->Add(fLambdaBckgNClustersTPC);
1997
1998 // Number of ITS clusters:
1999 // --- signal ---
2000 fLambdaNClustersITSPos =
80c0bcd3 2001 new TH3F("fLambdaNClustersITSPos","#Lambda: Pos. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2002 fOutputQA->Add(fLambdaNClustersITSPos);
2003
2004 fLambdaNClustersITSNeg =
80c0bcd3 2005 new TH3F("fLambdaNClustersITSNeg","#Lambda: Neg. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2006 fOutputQA->Add(fLambdaNClustersITSNeg);
2007 // --- background ---
2008 fLambdaBckgNClustersITSPos =
80c0bcd3 2009 new TH3F("fLambdaBckgNClustersITSPos","#Lambda Bckg: Pos. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2010 fOutputQA->Add(fLambdaBckgNClustersITSPos);
2011
2012 fLambdaBckgNClustersITSNeg =
80c0bcd3 2013 new TH3F("fLambdaBckgNClustersITSNeg","#Lambda Bckg: Neg. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2014 fOutputQA->Add(fLambdaBckgNClustersITSNeg);
2015
2016
ca96d60a 2017 // ----------------------------
59e0735e 2018 // Quality Assurance AntiLambda:
ca96d60a 2019 // Transverse momentum:
2020 // --- signal ---
2021 fAntiLambdaPtPosDaug =
80c0bcd3 2022 new TH2F("fAntiLambdaPtPosDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 2023 fOutputQA->Add(fAntiLambdaPtPosDaug);
2024
2025 fAntiLambdaPtNegDaug =
80c0bcd3 2026 new TH2F("fAntiLambdaPtNegDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 2027 fOutputQA->Add(fAntiLambdaPtNegDaug);
2028
2029 // --- background ---
2030 fAntiLambdaBckgPtPosDaug =
80c0bcd3 2031 new TH2F("fAntiLambdaBckgPtPosDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 2032 fOutputQA->Add(fAntiLambdaBckgPtPosDaug);
2033
2034 fAntiLambdaBckgPtNegDaug =
80c0bcd3 2035 new TH2F("fAntiLambdaBckgPtNegDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
ca96d60a 2036 fOutputQA->Add(fAntiLambdaBckgPtNegDaug);
59e0735e 2037
2038 // Phi Eta
2039 // --- signal ---
2040 fAntiLambdaPhiEtaPosDaug =
80c0bcd3 2041 new TH3F("fAntiLambdaPhiEtaPosDaug","#bar{#Lambda}: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
2042 fAntiLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
59e0735e 2043 fAntiLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 2044 fAntiLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2045 fOutputQA->Add(fAntiLambdaPhiEtaPosDaug);
2046
2047 fAntiLambdaPhiEtaNegDaug =
80c0bcd3 2048 new TH3F("fAntiLambdaPhiEtaNegDaug","#bar{#Lambda}: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
2049 fAntiLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
59e0735e 2050 fAntiLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 2051 fAntiLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2052 fOutputQA->Add(fAntiLambdaPhiEtaNegDaug);
2053
2054 // --- background ---
2055 fAntiLambdaBckgPhiEtaPosDaug =
80c0bcd3 2056 new TH3F("fAntiLambdaBckgPhiEtaPosDaug","#bar{#Lambda}: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
2057 fAntiLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
59e0735e 2058 fAntiLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 2059 fAntiLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2060 fOutputQA->Add(fAntiLambdaBckgPhiEtaPosDaug);
2061
2062 fAntiLambdaBckgPhiEtaNegDaug =
80c0bcd3 2063 new TH3F("fAntiLambdaBckgPhiEtaNegDaug","#bar{#Lambda}: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
2064 fAntiLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
59e0735e 2065 fAntiLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
80c0bcd3 2066 fAntiLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2067 fOutputQA->Add(fAntiLambdaBckgPhiEtaNegDaug);
2068
2069 // Distance of closest approach
2070 // --- signal ---
2071 fAntiLambdaDCAPosDaug =
e280e70b 2072 new TH2F("fAntiLambdaDCAPosDaug","#bar{#Lambda}: dca Pos",66,0.,3.3,nbins,pMin,pMax);
59e0735e 2073 fAntiLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 2074 fAntiLambdaDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2075 fOutputQA->Add(fAntiLambdaDCAPosDaug);
2076
2077 fAntiLambdaDCANegDaug =
e280e70b 2078 new TH2F("fAntiLambdaDCANegDaug","#bar{#Lambda}: dca Neg",66,0.,3.3,nbins,pMin,pMax);
59e0735e 2079 fAntiLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 2080 fAntiLambdaDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2081 fOutputQA->Add(fAntiLambdaDCANegDaug);
2082
2083 // --- background ---
2084 fAntiLambdaBckgDCAPosDaug =
e280e70b 2085 new TH2F("fAntiLambdaBckgDCAPosDaug","#bar{#Lambda} Bckg: dca Pos",66,0.,3.3,nbins,pMin,pMax);
59e0735e 2086 fAntiLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 2087 fAntiLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2088 fOutputQA->Add(fAntiLambdaBckgDCAPosDaug);
2089
2090 fAntiLambdaBckgDCANegDaug =
e280e70b 2091 new TH2F("fAntiLambdaBckgDCANegDaug","#bar{#Lambda} Bckg: dca Neg",66,0.,3.3,nbins,pMin,pMax);
59e0735e 2092 fAntiLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
80c0bcd3 2093 fAntiLambdaBckgDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2094 fOutputQA->Add(fAntiLambdaBckgDCANegDaug);
2095
59e0735e 2096 // Decay vertex reconstruction
2097 // --- signal ---
2098 fAntiLambdaDecayPos =
2099 new TH3F("fAntiLambdaDecayPos","#bar{#Lambda}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
2100 fAntiLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
2101 fAntiLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
80c0bcd3 2102 fAntiLambdaDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2103 fOutputQA->Add(fAntiLambdaDecayPos);
2104
2105 fAntiLambdaDecayVertex =
348080d3 2106 new TH2F("fAntiLambdaDecayVertex","#bar{#Lambda}: decay length",100,0.,100.,nbins,pMin,pMax);
59e0735e 2107 fAntiLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
80c0bcd3 2108 fAntiLambdaDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2109 fOutputQA->Add(fAntiLambdaDecayVertex);
2110
59e0735e 2111 // --- background ---
2112 fAntiLambdaBckgDecayPos =
2113 new TH3F("fAntiLambdaBckgDecayPos","#bar{#Lambda} Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
2114 fAntiLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
2115 fAntiLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
80c0bcd3 2116 fAntiLambdaBckgDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2117 fOutputQA->Add(fAntiLambdaBckgDecayPos);
2118
2119 fAntiLambdaBckgDecayVertex =
348080d3 2120 new TH2F("fAntiLambdaBckgDecayVertex","#bar{#Lambda} Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
59e0735e 2121 fAntiLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
80c0bcd3 2122 fAntiLambdaBckgDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2123 fOutputQA->Add(fAntiLambdaBckgDecayVertex);
2124
59e0735e 2125 // Cosine of the Pointing Angle
2126 // --- signal ---
2127 fAntiLambdaCPA =
b6f9da99 2128 new TH2F("fAntiLambdaCPA","#bar{#Lambda}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
59e0735e 2129 fAntiLambdaCPA->GetXaxis()->SetTitle("cpa");
80c0bcd3 2130 fAntiLambdaCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2131 fOutputQA->Add(fAntiLambdaCPA);
2132 // --- background ---
2133 fAntiLambdaBckgCPA =
b6f9da99 2134 new TH2F("fAntiLambdaBckgCPA","#bar{#Lambda} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
59e0735e 2135 fAntiLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
80c0bcd3 2136 fAntiLambdaBckgCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2137 fOutputQA->Add(fAntiLambdaBckgCPA);
2138
2139 // DCA between daughters
2140 // --- signal ---
2141 fAntiLambdaDCAV0Daug =
2142 new TH2F("fAntiLambdaDCAV0Daug","#bar{#Lambda}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
2143 fAntiLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
80c0bcd3 2144 fAntiLambdaDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2145 fOutputQA->Add(fAntiLambdaDCAV0Daug);
2146 // --- background ---
2147 fAntiLambdaBckgDCAV0Daug =
2148 new TH2F("fAntiLambdaBckgDCAV0Daug","#bar{#Lambda} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
2149 fAntiLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
80c0bcd3 2150 fAntiLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
59e0735e 2151 fOutputQA->Add(fAntiLambdaBckgDCAV0Daug);
2152
2153 // Number of TPC clusters:
2154 // --- signal ---
2155 fAntiLambdaNClustersTPC =
9cb4cfe3 2156 new TH3F("fAntiLambdaNClustersTPC","#bar{#Lambda};#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
59e0735e 2157 fOutputQA->Add(fAntiLambdaNClustersTPC);
2158 // --- background ---
2159 fAntiLambdaBckgNClustersTPC =
9cb4cfe3 2160 new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
59e0735e 2161 fOutputQA->Add(fAntiLambdaBckgNClustersTPC);
2162
2163 // Number of ITS clusters:
2164 // --- signal ---
2165 fAntiLambdaNClustersITSPos =
80c0bcd3 2166 new TH3F("fAntiLambdaNClustersITSPos","#bar{#Lambda}: Pos. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2167 fOutputQA->Add(fAntiLambdaNClustersITSPos);
2168
2169 fAntiLambdaNClustersITSNeg =
80c0bcd3 2170 new TH3F("fAntiLambdaNClustersITSNeg","#bar{#Lambda}: Neg. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2171 fOutputQA->Add(fAntiLambdaNClustersITSNeg);
2172 // --- background ---
2173 fAntiLambdaBckgNClustersITSPos =
80c0bcd3 2174 new TH3F("fAntiLambdaBckgNClustersITSPos","#bar{#Lambda} Bckg: Pos. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2175 fOutputQA->Add(fAntiLambdaBckgNClustersITSPos);
2176
2177 fAntiLambdaBckgNClustersITSNeg =
80c0bcd3 2178 new TH3F("fAntiLambdaBckgNClustersITSNeg","#bar{#Lambda} Bckg: Neg. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
59e0735e 2179 fOutputQA->Add(fAntiLambdaBckgNClustersITSNeg);
6668159e 2180
2181 }
2182
6668159e 2183 // ============================================================= //
348080d3 2184
667b678a 2185 PostData(1, fOutput);
348080d3 2186 PostData(2, fOutputME);
2187 PostData(3, fOutputQA);
667b678a 2188
2189}
2190
2191//___________________________________________________________________________________________
2192
348080d3 2193static Int_t VtxBin(Double_t vtx)
2194{
2195 // Bin in vertez position Z
2196 Int_t bin = -1;
2197 for(Int_t i=0;i<kNVtxZ;i++)
80c0bcd3 2198 if ( (vtx>=kBinVtxZ[i]) && (vtx<kBinVtxZ[i+1]) )
348080d3 2199 bin = i;
2200
2201 return bin;
2202
2203}
2204
2205//___________________________________________________________________________________________
2206
2207static Int_t PtBin(Double_t pt)
2208{
2209 // Bin in pt
2210 Int_t bin = -1;
781e881f 2211 for(Int_t i=0;i<kN1;i++)
80c0bcd3 2212 if ( (pt>=kPtBinV0[i]) && (pt<kPtBinV0[i+1]) )
348080d3 2213 bin = i;
2214
2215 return bin;
2216
2217}
2218
2219//___________________________________________________________________________________________
2220
2221static Int_t CentBin(Double_t cent)
2222{
2223 // Bin in pt
2224 Int_t bin = -1;
2225 for(Int_t i=0;i<kNCent;i++)
80c0bcd3 2226 if ( (cent>=kBinCent[i]) && (cent<kBinCent[i+1]) )
348080d3 2227 bin = i;
2228
2229 return bin;
2230
2231}
2232
2233//___________________________________________________________________________________________
2234
81c9e762 2235Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(const AliAODTrack *t)
667b678a 2236{
2237 // Track criteria for primaries particles
e89136cd 2238 //if(fTriggerFB!=128 && fTriggerFB!=272) return kFALSE;
ce2d235a 2239
348080d3 2240 if (TMath::Abs(t->Eta())>0.8 ) return kFALSE;
78c6fbbe 2241 //if (!(t->TestFilterMask(1<<7))) return kFALSE;
ce2d235a 2242 //if( !(t->TestFilterBit(272)) ) return kFALSE;
2243 if( !(t->TestFilterBit(fTriggerFB)) ) return kFALSE;
2244
348080d3 2245 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
9cb4cfe3 2246 if (nCrossedRowsTPC < 70) return kFALSE;
2247
78c6fbbe 2248 // Point in the SPD
3002fb0e 2249 Int_t SPDHits = t->HasPointOnITSLayer(0) + t->HasPointOnITSLayer(1);
348080d3 2250 if( SPDHits )
2251 fTriggerWiSPDHit->Fill(1.5);
2252
667b678a 2253 return kTRUE;
2254}
59e0735e 2255
667b678a 2256//___________________________________________________________________________________________
2257
ca96d60a 2258Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrackV0(const AliAODTrack *t)
667b678a 2259{
2260 // Track criteria for daughter particles of V0 candidate
667b678a 2261 if (!t->IsOn(AliAODTrack::kTPCrefit)) return kFALSE;
667b678a 2262 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
ca96d60a 2263 if (nCrossedRowsTPC<fDaugNClsTPC) return kFALSE;
59e0735e 2264
667b678a 2265 return kTRUE;
2266}
2267
667b678a 2268//___________________________________________________________________________________________
2269
2270Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptV0(AliAODVertex *vtx, const AliAODv0 *v1)
2271{
2272 // Selection for accepting V0 candidates
2273
2274 if (v1->GetOnFlyStatus()) return kFALSE;
2275
2276 //if (v1->Pt() < pMin) return kFALSE; ***
2277
2278 const AliAODTrack *ntrack1=(AliAODTrack *)v1->GetDaughter(1);
2279 const AliAODTrack *ptrack1=(AliAODTrack *)v1->GetDaughter(0);
2280
2281 if( !ntrack1 || !ptrack1 ) return kFALSE;
2282 if( !AcceptTrackV0(ntrack1) ) return kFALSE;
2283 if( !AcceptTrackV0(ptrack1) ) return kFALSE;
2284
2285 if( ntrack1->Charge() == ptrack1->Charge())
2286 return kFALSE;
2287
2288 // Daughters: pseudo-rapidity cut
2289 if ( TMath::Abs(ntrack1->Eta()) > fMaxEtaDaughter ||
2290 TMath::Abs(ptrack1->Eta()) > fMaxEtaDaughter )
2291 return kFALSE;
2292
2293 // Daughters: transverse momentum cut
2294 if ( ( ntrack1->Pt() < fMinPtDaughter ) ||
2295 ( ptrack1->Pt() < fMinPtDaughter ) )
2296 return kFALSE;
2297
2298 // Daughters: Impact parameter of daughter to prim vtx
2299 Float_t xy = v1->DcaNegToPrimVertex();
2300 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
2301 xy = v1->DcaPosToPrimVertex();
2302 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
2303
2304 // Daughters: DCA
b6a9eae2 2305 Float_t dca = v1->DcaV0Daughters();
667b678a 2306 if (dca>fMaxDCADaughter) return kFALSE;
2307
2308 // V0: Cosine of the pointing angle
b6a9eae2 2309 Float_t cpa=v1->CosPointingAngle(vtx);
667b678a 2310 if (cpa<fMinCPA) return kFALSE;
2311
2312 // V0: Fiducial volume
2313 Double_t xyz[3]; v1->GetSecondaryVtx(xyz);
b6a9eae2 2314 Float_t r2=xyz[0]*xyz[0] + xyz[1]*xyz[1];
348080d3 2315 if (r2<5.*5.) return kFALSE;
667b678a 2316 if (r2>lMax*lMax) return kFALSE;
2317
2318 return kTRUE;
2319}
2320
2321//___________________________________________________________________________________________
2322
b6a9eae2 2323static Float_t dPHI(Float_t phi1, Float_t phi2)
667b678a 2324{
2325 // Calculate the phi difference between two tracks
b6a9eae2 2326 Float_t deltaPhi = phi1 - phi2;
667b678a 2327
2328 if (deltaPhi<-TMath::PiOver2()) deltaPhi = deltaPhi + 2*(TMath::Pi());
2329 if (deltaPhi>(3*TMath::PiOver2())) deltaPhi = deltaPhi - 2*(TMath::Pi());
2330 return deltaPhi;
2331}
2332
2333//___________________________________________________________________________________________
2334
b6a9eae2 2335static Float_t MyRapidity(Float_t rE, Float_t rPz)
667b678a 2336{
2337 // Local method for rapidity
2338 return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
2339}
2340
2341//___________________________________________________________________________________________
2342
81c9e762 2343static Int_t SameTrack(const AliAODTrack *trig, const AliAODTrack *daug)
667b678a 2344{
2345 // Local method to compaire the momentum between two tracks
2346
348080d3 2347 //double const kEpsilon = 0.01;
667b678a 2348 Int_t isSamePt = 0;
2349
348080d3 2350 /*
2351 Float_t p[3]; trk->GetPxPyPz(p);
2352 Float_t pNegTrk[3]; nTrk->GetPxPyPz(pNegTrk);
2353 Float_t pPosTrk[3]; pTrk->GetPxPyPz(pPosTrk);
667b678a 2354
b6f9da99 2355 if( ( fabs(p[0]-pNegTrk[0])<kEpsilon &&
348080d3 2356 fabs(p[1]-pNegTrk[1])<kEpsilon &&
2357 fabs(p[2]-pNegTrk[2])<kEpsilon )
667b678a 2358 isSamePt = 1;
6668159e 2359 */
348080d3 2360
81c9e762 2361 if( (TMath::Abs(daug->GetID())+1)==(TMath::Abs(trig->GetID())) )
348080d3 2362 isSamePt = 1;
667b678a 2363
6668159e 2364
667b678a 2365 return isSamePt;
2366
2367}
2368
2369//___________________________________________________________________________________________
2370
81c9e762 2371static Int_t SameLabel(const AliAODTrack *trig, const AliAODTrack *daug)
2372{
2373 // Compaire the the label value that points back to the Monte Carlo production
2374 //cout << trig->GetLabel() << " " << daug->GetLabel() << endl;
2375
2376 if( TMath::Abs(trig->GetLabel() ) ==
2377 TMath::Abs(daug->GetLabel() ) )
2378 return 1.0;
2379
2380 return 0.;
2381
2382}
2383
2384//___________________________________________________________________________________________
2385
348080d3 2386static Float_t SpatialResolution(Float_t p1x,Float_t p1y,Float_t p2x,Float_t p2y,Float_t dist)
2387{
2388 // Obtains the spacial resolution between trigger and V0
2389 // within a distance in (deltaPhi,deltaEta) < 0.1
2390
2391 Float_t res = -100.;
2392
2393 res = TMath::Sqrt( p1x*p1x + p1y*p1y )*TMath::Sqrt( p2x*p2x + p2y*p2y );
2394 res = (p1x*p2x + p1y*p2y)/res;
2395
2396 res = TMath::ACos(res);
2397
2398 return res = TMath::Sin(res)*dist;
2399
2400}
2401
0e7d3472 2402//___________________________________________________________________________________________
2403
2404static Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign)
2405{
2406 //
2407 // calculates dphistar
2408 //
2409
2410 Float_t dphistar = phi1 - phi2 - charge1 * bSign * TMath::ASin(0.075 * radius / pt1) + charge2 * bSign * TMath::ASin(0.075 * radius / pt2);
2411 static const Double_t kPi = TMath::Pi();
2412
2413 // circularity
2414 if (dphistar > kPi)
2415 dphistar = kPi * 2 - dphistar;
2416 if (dphistar < -kPi)
2417 dphistar = -kPi * 2 - dphistar;
2418 if (dphistar > kPi) // might look funny but is needed
2419 dphistar = kPi * 2 - dphistar;
2420
2421 return dphistar;
2422
2423}
2424
2425
2426//___________________________________________________________________________________________
2427
2428static Float_t TwoTrackEfficiencyCut(Float_t phi1, Float_t eta1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t eta2, Float_t pt2, Float_t charge2, Float_t bSign)
2429{
2430 // Code taken from the HBT analysis to reject the track splitting
2431 // It was modified to provide only the value of kDphiStarMax
2432 // and a possible rejection in the kDphiStarMean
2433
2434 Float_t kRadiousDphiStarMax = -0.0005;
2435 Float_t deta = eta1 - eta2;
2436 Float_t twoTrackEfficiencyCutValue = 0.02;
2437
2438 // optimization
2439 if (TMath::Abs(deta) < twoTrackEfficiencyCutValue * 2.5 * 3) {
2440
2441 // check first boundaries to see if is worth to loop and find the minimum
2442 Float_t dphistar1 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 0.8, bSign);
2443 Float_t dphistar2 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 2.5, bSign);
2444
2445 const Float_t kLimit = twoTrackEfficiencyCutValue * 3;
2446
2447 //Float_t dphistarminabs = 1e5;
2448 //Float_t dphistarmin = 1e5;
2449
2450 if (TMath::Abs(dphistar1) < kLimit || TMath::Abs(dphistar2) < kLimit || dphistar1 * dphistar2 < 0){
2451
2452 kRadiousDphiStarMax = 0;
2453 //kDphiStarMean = 0;
2454 //Int_t i=0;
2455
2456 for (Double_t rad=0.8; rad<2.51; rad+=0.01){
2457
2458 if ( TMath::Abs(0.075 * rad / pt2)>1 ) break;
2459
2460 Float_t dphistar = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, rad, bSign);
2461 Float_t dphistarabs = TMath::Abs(dphistar);
2462
2463 if( ( (dphistarabs*rad) > kRadiousDphiStarMax) && ( TMath::Abs(deta) < twoTrackEfficiencyCutValue ) ){
2464 kRadiousDphiStarMax = dphistarabs*rad;
2465 }
2466
2467 //kDphiStarMean += dphistarabs;
2468 //i++;
2469
2470 }
2471
2472 //kDphiStarMean = kDphiStarMean/i;
2473 /*if (TMath::Abs(deta) < twoTrackEfficiencyCutValue && kDphiStarMean < twoTrackEfficiencyCutValue ){
2474 return kFALSE;
2475 }*/
2476
2477 } // End selection in dphistar
2478
2479 } // End dEta value
2480
2481
2482 return kRadiousDphiStarMax;
2483
2484}
2485
348080d3 2486//___________________________________________________________________________________________
cb30d9ae 2487/*
81c9e762 2488static Bool_t GoodTPCSharedMap(const AliAODTrack *track)
2489{
773f3106 2490 // Rejects tracks with shared clusters after filling a control histogram
2491 // This overload is used for primaries
2492
2493 // Get the shared maps
2494 const TBits sharedMap = track->GetTPCSharedMap();
2495 // Fill a control histogram
2496 //fPriHistShare->Fill(sharedMap.CountBits());
2497 // Reject shared clusters
2498 if((sharedMap.CountBits()) >= 1){
2499 // Bad track, has too many shared clusters!
2500 return kFALSE;
2501 }
2502 return kTRUE;
2503}
cb30d9ae 2504*/
773f3106 2505//___________________________________________________________________________________________
81c9e762 2506
cb30d9ae 2507static Float_t GetFractionTPCSharedCls(const AliAODTrack *track)
2508{
773f3106 2509 // Rejects tracks with shared clusters after filling a control histogram
2510 // This overload is used for primaries
2511
2512 // Get the shared maps
2513 const TBits sharedMap = track->GetTPCSharedMap();
81c9e762 2514
2515 return 1.*sharedMap.CountBits()/track->GetTPCNclsF();
2516
773f3106 2517}
2518
2519//___________________________________________________________________________________________
81c9e762 2520
2521Double_t AliAnalysisTaskLambdaOverK0sJets::ThetaS(TString part)
2522{
2523 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2524 // private communication with Hans Beck
2525
2526 // Returns the longitudinal angle of the particles propagated
2527 // position at R=1.25m. See
2528 // https://edms.cern.ch/file/406391/2/ALICE-INT-2003-038.pdf
2529 // for the ALICE coordinate system. Theta is zero at positive z,
2530 // pi/2 at z = 0 aka the xy plane and pi at negative z
2531
2532 // R^ ^
2533 // | /
2534 // |θ'/
2535 // | / θ
2536 // |/____>z
2537 //
2538 // Let's compute θ' and θ = π/2 - θ'
2539 // where θ' can even be and should
2540 // sometimes be negative
2541 // tan(θ') = z/R
2542 // θ' = arctan(z/R)
2543 // θ = π/2 - θ'
2544 // = π/2 - arctan(z/R)
2545 // Note that in the doc above theta
2546 // is calculated as arccos(z/sqrt(x^2+y^2+z^2))
2547
2548 // Array of positions is 85,105,125,..cm,
2549 // we take the z position at R=1.25m
2550 // return TMath::Pi()/2. - TMath::ATan(fXshifted[2][2]/125.);
cb30d9ae 2551 /*
2552 if( part.EqualTo("Trigger") )
81c9e762 2553 return TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/125.);
cb30d9ae 2554 else if( part.EqualTo("Daughter") )
81c9e762 2555 return TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/125.);
cb30d9ae 2556 */
2557
e5930cc2 2558 Double_t thetaS = -100.;
cb30d9ae 2559
2560 if( part.EqualTo("Trigger") )
2561 thetaS = TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/fTPCRadius);
2562 if( part.EqualTo("Daughter") )
2563 thetaS = TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/fTPCRadius);
2564
2565 return thetaS;
81c9e762 2566
2567}
2568
2569//___________________________________________________________________________________________
2570
2571Double_t AliAnalysisTaskLambdaOverK0sJets::EtaS(TString part)
2572{
2573 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2574 // private communication with Hans Beck
2575
2576 // Returns the corresponding eta of a pri. part.
2577 // with this particles pos at R=1.25m
2578
2579 // http://en.wikipedia.org/wiki/Pseudorapidity
2580 // η = -ln[ tan(θ/2)]
2581 // printf("z: %+04.0f, thetaS %+03.2f etaS %+1.2f\n"
2582 // ,fXshifted[2][2],ThetaS(),-TMath::Log( TMath::Tan(ThetaS()/2.) ));
2583
2584 return -TMath::Log( TMath::Tan(ThetaS(part)/2.) );
2585}
2586
2587//___________________________________________________________________________________________
2588
2589Float_t AliAnalysisTaskLambdaOverK0sJets::dEtaS()
2590{
2591 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2592 // private communication with Hans Beck
2593
2594 // Returns the pseudorapidity star difference
2595
2596 // It is important to keep the calculations easy and separated.
2597 // The calculation of EtaS is straight forward, one just has to
2598 // do it step by step to not get confused.
2599 return EtaS("Trigger") - EtaS("Daughter");
2600}
2601
2602//___________________________________________________________________________________________
2603
cb30d9ae 2604Float_t AliAnalysisTaskLambdaOverK0sJets::dPhiSAtR125()
81c9e762 2605{
2606 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2607 // private communication with Hans Beck
2608
2609 // returns delta phi star at R=1.2m
2610 // position at R=1.2m is stored as second radius
2611 // const Float_t distSft= TMath::Sqrt(TMath::Power(track1.fXshifted[2][0] - track2.fXshifted[2][0],2)
2612 // +TMath::Power(track1.fXshifted[2][1] - track2.fXshifted[2][1],2));
2613 const Float_t distSft= TMath::Sqrt( TMath::Power(fTrigSftR125[0] - fDaugSftR125[0],2) +
2614 TMath::Power(fTrigSftR125[1] - fDaugSftR125[1],2) );
cb30d9ae 2615 //return 2.0 * TMath::ATan(distSft/2./(125.));
2616 return 2.0 * TMath::ATan(distSft/2./(fTPCRadius));
81c9e762 2617}
2618
2619
2620//___________________________________________________________________________________________
2621
2622void AliAnalysisTaskLambdaOverK0sJets::SetSftPosR125(const AliAODTrack *track,const Float_t bfield,const Float_t priVtx[3], TString part)
2623{
2624 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2625 // private communication with Hans Beck
2626
2627 // Sets the spatial position of the track at the radius R=1.25m in the shifted coordinate system
773f3106 2628
81c9e762 2629 // Initialize the array to something indicating there was no propagation
2630 if(part.EqualTo("Trigger")){
2631 fTrigSftR125[0] = -9999.;
2632 fTrigSftR125[1] = -9999.;
2633 fTrigSftR125[2] = -9999.;
2634 }
2635 if(part.EqualTo("Daughter")){
2636 fDaugSftR125[0] = -9999.;
2637 fDaugSftR125[1] = -9999.;
2638 fDaugSftR125[2] = -9999.;
2639 }
2640
2641 // Make a copy of the track to not change parameters of the track
2642 AliExternalTrackParam etp;
2643 etp.CopyFromVTrack(track);
773f3106 2644
81c9e762 2645 // The global position of the the track
2646 Double_t xyz[3]={-9999.,-9999.,-9999.};
2647
2648 // The radius we want to propagate to, squared
cb30d9ae 2649 //const Float_t RSquaredWanted(125.*125.);
2650 const Float_t RSquaredWanted(fTPCRadius*fTPCRadius);
81c9e762 2651
2652 // Propagation is done in local x of the track
2653 for (Float_t x = 58.; x < 247.; x+=1.){
2654 // Starts at 83 / Sqrt(2) and goes outwards. 85/Sqrt(2) is the smallest local x
2655 // for global radius 85 cm. x = 245 is the outer radial limit of the TPC when
2656 // the track is straight, i.e. has inifinite pt and doesn't get bent.
2657 // If the track's momentum is smaller than infinite, it will develop a y-component,
2658 // which adds to the global radius
2659 // We don't change the propagation steps to not mess up things!
2660
2661 // Stop if the propagation was not succesful. This can happen for low pt tracks
2662 // that don't reach outer radii
2663 if(!etp.PropagateTo(x,bfield)) break;
2664 etp.GetXYZ(xyz); // GetXYZ returns global coordinates
2665
2666 // Calculate the shifted radius we are at, squared.
2667 // Compare squared radii for faster code
2668 Float_t shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
2669 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
2670
2671 // Roughly reached the radius we want
2672 if(shiftedRadiusSquared > RSquaredWanted){
2673
2674 // Bigger loop has bad precision, we're nearly one centimeter too far,
2675 // go back in small steps.
2676 while (shiftedRadiusSquared>RSquaredWanted){
2677 // Propagate a mm inwards
2678 x-=.1;
2679 if(!etp.PropagateTo(x,bfield)){
2680 // Propagation failed but we're already with a
2681 // cm precision at R=1.25m so we only break the
2682 // inner loop
2683 break;
2684 }
2685 // Get the global position
2686 etp.GetXYZ(xyz);
2687 // Calculate shifted radius, squared
2688 shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
2689 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
2690 }
2691
2692 // We reached R=1.25m with a precission of a cm to a mm,
2693 // set the spatial position
2694 if(part.EqualTo("Trigger")){
2695 fTrigSftR125[0] = xyz[0] - priVtx[0];
2696 fTrigSftR125[1] = xyz[1] - priVtx[1];
2697 fTrigSftR125[2] = xyz[2] - priVtx[2];
2698
2699 /*cout << endl
2700 << xyz[0] << " " << xyz[1] << " " << xyz[2] << endl;
2701 cout << fTrigSftR125[0] << " " << fTrigSftR125[1] << " " <<fTrigSftR125[2] << endl;*/
2702 }
2703 if(part.EqualTo("Daughter")){
2704 fDaugSftR125[0] = xyz[0] - priVtx[0];
2705 fDaugSftR125[1] = xyz[1] - priVtx[1];
2706 fDaugSftR125[2] = xyz[2] - priVtx[2];
2707
2708 /*cout << endl
2709 << xyz[0] << " " << xyz[1] << " " << xyz[2] << endl
2710 << fDaugSftR125[0] << " " << fDaugSftR125[1] << " " <<fDaugSftR125[2] << endl;*/
2711 }
2712
2713 // Done
2714 return;
2715
2716 } // End of if roughly reached radius
2717
cb30d9ae 2718 } // End of coarse propagation loop
81c9e762 2719
773f3106 2720}
81c9e762 2721
773f3106 2722//___________________________________________________________________________________________
2723
81c9e762 2724void AliAnalysisTaskLambdaOverK0sJets::RecCascade(const AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
667b678a 2725{
2726 // Local method to reconstruct cascades candidates from the combinations of three tracks
2727 // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
2728 // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
2729 // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
2730
b6a9eae2 2731 Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
2732 Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.;
2733 Float_t pLambda[3] = {0.,0.,0.};
2734 Float_t pCascade[3] = {0.,0.,0.};
2735 Float_t lMassCascade = 0., lPtot2Cascade=0.;
667b678a 2736
2737 // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
2738 for(Int_t i=0;i<2;i++){
2739
2740 // 0. Check the charge for both tracks: trk1 & trk2.
2741 // Usefull in the Lambda step.
2742 if( trk1->Charge() == trk2->Charge() )
2743 continue;
2744
2745 // 1. Bachelor: Allocation for the track
2746 if(i==0) // Xi
2747 lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
2748 else if(i==1) //Omega
2749 lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
2750
2751 lPtot2Bach = TMath::Power(trkBch->P(),2);
2752
2753 lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
2754
2755 // 2. Lambda: Kinematical properties
2756 lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
2757
2758 pLambda[0] = trk1->Px() + trk2->Px();
2759 pLambda[1] = trk1->Py() + trk2->Py();
2760 pLambda[2] = trk1->Pz() + trk2->Pz();
2761
2762 lPtot2Lambda = pLambda[0]*pLambda[0] + pLambda[1]*pLambda[1] + pLambda[2]*pLambda[2];
2763
2764 lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
2765
2766 // 3. Cascade: Reconstruction
2767 pCascade[0] = pLambda[0] + trkBch->Px();
2768 pCascade[1] = pLambda[1] + trkBch->Py();
2769 pCascade[2] = pLambda[2] + trkBch->Pz();
2770
2771 lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
2772
2773 lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
2774
2775 // 4. Filling histograms
2776 if( histo.Contains("K0s") ) {
f25a6d07 2777 if(i==0) // Xi
348080d3 2778 fV0MassCascade->Fill(lMassCascade,1);
2779 else if(i==1) //Omega
2780 fV0MassCascade->Fill(lMassCascade,3);
2781 }
2782 else if( histo.Contains("AntiLambda") ) {
2783 if(i==0) // Xi
2784 fV0MassCascade->Fill(lMassCascade,9);
f25a6d07 2785 else if(i==1) //Omega
348080d3 2786 fV0MassCascade->Fill(lMassCascade,11);
667b678a 2787 }
2788 else if( histo.Contains("Lambda") ) {
f25a6d07 2789 if(i==0) // Xi
348080d3 2790 fV0MassCascade->Fill(lMassCascade,5);
f25a6d07 2791 else if(i==1) //Omega
348080d3 2792 fV0MassCascade->Fill(lMassCascade,7);
667b678a 2793 }
2794
667b678a 2795 }
348080d3 2796
667b678a 2797}
2798
2799//___________________________________________________________________________________________
2800
348080d3 2801void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig)
667b678a 2802{
2803 // Three options for the 'step' variable:
2804 // 1) TriggerCheck
348080d3 2805 // 2) Reconstruction
667b678a 2806
81c9e762 2807 const AliAODTrack *trkTrig = 0x0;
348080d3 2808 Float_t ptTrig = -100.;
2809 Float_t phiTrig = -100.;
2810 Float_t etaTrig = -100.;
2811 Double_t pTrig[3];
f25a6d07 2812
348080d3 2813 if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
f15c1f69 2814 trkTrig = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(idTrig));
2815 if(!trkTrig) AliFatal("Not a standard AOD");
667b678a 2816 ptTrig = trkTrig->Pt();
2817 phiTrig = trkTrig->Phi();
2818 etaTrig = trkTrig->Eta();
348080d3 2819 trkTrig->GetPxPyPz(pTrig);
667b678a 2820 }
2821
667b678a 2822 // *************************************************
2823 // Centrality selection
2824 AliCentrality *cent = fAOD->GetCentrality();
b6a9eae2 2825 Float_t centrality = cent->GetCentralityPercentile("V0M");
b6f9da99 2826 Int_t curCentBin = CentBin(centrality);
667b678a 2827
2828 // *************************************************
2829 // MC Event
2830 TClonesArray *stackMC = 0x0;
b6a9eae2 2831 Float_t mcXv=0., mcYv=0., mcZv=0.;
667b678a 2832
2833 if(fIsMC){
2834 TList *lst = fAOD->GetList();
2835 stackMC = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
2836 if (!stackMC) {
2837 Printf("ERROR: stack not available");
2838 }
2839
2840 AliAODMCHeader *mcHdr =
2841 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
2842
2843 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
2844 }
2845
2846 // *************************************************
2847 // V0 loop - AOD
2848 const AliAODVertex *vtx=fAOD->GetPrimaryVertex();
b6a9eae2 2849 Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
667b678a 2850 Int_t nV0sTot = fAOD->GetNumberOfV0s();
348080d3 2851
667b678a 2852 for (Int_t iV0 = 0; iV0 < nV0sTot; iV0++) {
2853
2854 AliAODv0 *v0=fAOD->GetV0(iV0);
2855 if (!v0) continue;
2856 if (!AcceptV0(fAOD->GetPrimaryVertex(),v0)) continue;
2857
2858 const AliAODTrack *ntrack=(AliAODTrack *)v0->GetDaughter(1);
2859 const AliAODTrack *ptrack=(AliAODTrack *)v0->GetDaughter(0);
59e0735e 2860
667b678a 2861 // Decay vertex
2862 Double_t xyz[3]; v0->GetSecondaryVtx(xyz);
348080d3 2863 Float_t dx=xyz[0]-xv, dy=xyz[1]-yv;//, dz=xyz[2]-zv;
ca96d60a 2864
59e0735e 2865 // Momentum: 2D & 3D
b6a9eae2 2866 Float_t pt=TMath::Sqrt(v0->Pt2V0());
348080d3 2867 //Float_t p=v0->P();
ca96d60a 2868
2869 // Decay length: 2D & 3D
2870 Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
2871 //Float_t dl=TMath::Sqrt(dx*dx + dy*dy + dz*dz);
348080d3 2872
b6a9eae2 2873 Float_t dlK = 0.4977*lt/pt;
2874 Float_t dlL = 1.1157*lt/pt;
ce2d235a 2875
2876 //Float_t dlK = v0->MassK0Short()*dl/p;
2877 //Float_t dlL = v0->MassLambda()*dl/p;
2878 //Float_t dlAL = v0->MassAntiLambda()*dl/p;
667b678a 2879
2880 // ctau
348080d3 2881 Bool_t ctK=kTRUE; if (dlK > fMaxCtau*2.68 || dlK < fMinCtau*2.68) ctK=kFALSE;
2882 Bool_t ctL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctL=kFALSE;
2883 Bool_t ctAL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctAL=kFALSE;
667b678a 2884
ca96d60a 2885 // ---- Daughter tracks properties:
2886 // Pt
2887 Float_t lPtNeg = ntrack->Pt();
2888 Float_t lPtPos = ptrack->Pt();
2889 // Momentum
2890 Double_t pNegDaug[3]; ntrack->GetPxPyPz(pNegDaug);
2891 Double_t pPosDaug[3]; ptrack->GetPxPyPz(pPosDaug);
2892 // Phi
2893 Float_t phiNeg = ntrack->Phi();
2894 Float_t phiPos = ptrack->Phi();
2895 // Eta
2896 Float_t etaNeg = ntrack->Eta();
2897 Float_t etaPos = ptrack->Eta();
2898 // Number of TPC Clusters
2899 Float_t nClsTPCPos = ptrack->GetTPCClusterInfo(2,1);
2900 Float_t nClsTPCNeg = ntrack->GetTPCClusterInfo(2,1);
2901 // Number of clusters of ITS
2902 Double_t posITSNcls = ptrack->GetITSNcls();
2903 Double_t negITSNcls = ntrack->GetITSNcls();
2904
2905 // ---- V0 candidate properties:
667b678a 2906 // Armenteros variables:
b6a9eae2 2907 Float_t lAlphaV0 = v0->AlphaV0();
2908 Float_t lPtArmV0 = v0->PtArmV0();
ca96d60a 2909 // dca to primary vertex
2910 Float_t dcaNeg = v0->DcaNegToPrimVertex();
2911 Float_t dcaPos = v0->DcaPosToPrimVertex();
2912 // dca between daughters
2913 Float_t dca = v0->DcaV0Daughters();
2914 // cpa
2915 Float_t cpa = v0->CosPointingAngle(fAOD->GetPrimaryVertex());
2916 // eta
2917 Float_t lEta = v0->PseudoRapV0();
2918 // phi
2919 Float_t lPhi = v0->Phi();
2920 //lPhi = ( (lPhi < 0) ? lPhi + 2*TMath::Pi() : lPhi );
2921
0aa4191c 2922 // Fraction of TPC Shared Cluster
2923 Float_t fracPosDaugTPCSharedMap = GetFractionTPCSharedCls(ptrack);
2924 Float_t fracNegDaugTPCSharedMap = GetFractionTPCSharedCls(ntrack);
2925
9cb4cfe3 2926 // rapidity
2927 Float_t rapK0s = v0->RapK0Short();
2928 Float_t rapLambda = v0->RapLambda();
2929
2930 if(fUseEtaCut){
2931 rapK0s = lEta;
2932 rapLambda = lEta;
2933 }
2934
2935 // **********************************
2936 // PID - tracks
2937 Float_t pPos = -100.;
2938 Float_t pNeg = -100.;
2939
2940 //Float_t dedxPos = -1000.;
2941 //Float_t dedxNeg = -1000.;
2942 //Float_t nsigPosPion = 0.;
2943 //Float_t nsigNegPion = 0.;
2944 Float_t nsigPosProton = 0.;
2945 Float_t nsigNegProton = 0.;
2946
2947 if(fUsePID && !fIsMC) {
2948 const AliAODPid *pidNeg = ntrack->GetDetPid();
2949 const AliAODPid *pidPos = ptrack->GetDetPid();
2950
2951 if (pidNeg && pidPos) {
2952 pPos = pidPos->GetTPCmomentum();
2953 pNeg = pidNeg->GetTPCmomentum();
2954 //dedxPos = pidPos->GetTPCsignal()/47.;
2955 //dedxNeg = pidNeg->GetTPCsignal()/47.;
2956
2957
2958 if(pPos<1.){
2959 //nsigPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
2960 nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
2961 }
2962 if(pNeg<1.){
2963 //nsigNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
2964 nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
2965 }
2966
2967 }
2968
2969 }
2970
ca96d60a 2971 // **********************************
2972 // Disentangle the V0 candidate
2973 Float_t massK0s = 0., mK0s = 0., sK0s = 0.;
2974 Float_t massLambda = 0., mLambda = 0., sL = 0.;
2975 Float_t massAntiLambda = 0., sAL = 0.;
2976
2977 Bool_t isCandidate2K0s = kFALSE;
2978 massK0s = v0->MassK0Short();
2979 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
2980 if( fCollision.Contains("PbPb2010") )
2981 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
2982 else if( fCollision.Contains("PbPb2011") )
2983 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
2984 if ( TMath::Abs(mK0s-massK0s) < 3*sK0s ) isCandidate2K0s = kTRUE;
667b678a 2985
ca96d60a 2986 Bool_t isCandidate2Lambda = kFALSE;
2987 massLambda = v0->MassLambda();
2988 mLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
2989 if( fCollision.Contains("PbPb2010") )
2990 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
2991 else if( fCollision.Contains("PbPb2011") )
2992 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
2993 if (TMath::Abs(mLambda-massLambda) < 3*sL) isCandidate2Lambda = kTRUE;
2994
2995 Bool_t isCandidate2LambdaBar = kFALSE;
2996 massAntiLambda = v0->MassAntiLambda();
2997 if( fCollision.Contains("PbPb2010") )
2998 sAL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
2999 else if( fCollision.Contains("PbPb2011") )
3000 sAL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
3001 if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) isCandidate2LambdaBar = kTRUE;
3002
3003 // **********************************
667b678a 3004 // MC Association:
53e7de27 3005 Bool_t lComeFromSigma = kTRUE;
3006 Bool_t lCheckMcK0Short = kTRUE;
3007 Bool_t lCheckMcLambda = kTRUE;
3008 Bool_t lCheckMcAntiLambda = kTRUE;
31f87a49 3009 Bool_t lComeFromXi = kTRUE;
667b678a 3010
ca96d60a 3011 Int_t lMCAssocNegDaug = -100;
3012 Int_t lMCAssocPosDaug = -100;
667b678a 3013
3014 // ********* MC - Association *********
3015 // In case of injected-MC, the correlations might be done with only natural particles
3016 Bool_t isNaturalPart = kTRUE;
348080d3 3017 if(step==kReconstruction){
667b678a 3018
3019 if(fIsMC){
3020 if(!stackMC) goto noas;
3021
ca96d60a 3022 isNaturalPart = kFALSE;
3023
53e7de27 3024 lComeFromSigma = kFALSE;
3025 lCheckMcK0Short = kFALSE;
3026 lCheckMcLambda = kFALSE;
3027 lCheckMcAntiLambda = kFALSE;
31f87a49 3028 lComeFromXi = kFALSE;
3029
667b678a 3030 Int_t ntrkMC=stackMC->GetEntriesFast();
3031
ce2d235a 3032 Int_t nlab = TMath::Abs(ntrack->GetLabel()); // ** UInt_t
667b678a 3033 Int_t plab = TMath::Abs(ptrack->GetLabel());
3034
3035 // To avoid futher problems
3036 if ( (nlab<0 || plab<0) ||
3037 (nlab>=ntrkMC || plab>=ntrkMC) )
3038 goto noas;
3039
3040 AliAODMCParticle *nPart=(AliAODMCParticle*)stackMC->UncheckedAt(nlab);
3041 AliAODMCParticle *pPart=(AliAODMCParticle*)stackMC->UncheckedAt(plab);
fe6eeffd 3042
3043 if(!nPart || !pPart) goto noas;
3044
667b678a 3045 // MC origin of daughters: Primaries?
3046 if( nPart->IsPhysicalPrimary() ) lMCAssocNegDaug = 1;
3047 if( pPart->IsPhysicalPrimary() ) lMCAssocPosDaug = 1;
667b678a 3048
bef5b5b9 3049 /*
cb30d9ae 3050 if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
3051 TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
667b678a 3052 goto noas;
bef5b5b9 3053 */
ca96d60a 3054 /*
667b678a 3055 // Daughter momentum cut
3056 if ( ( nPart->Pt() < fMinPtDaughter ) ||
ca96d60a 3057 ( pPart->Pt() < fMinPtDaughter ) )
3058 goto noas;
3059 */
3060
667b678a 3061 // ----------------------------------------
3062
3063 Int_t lPDGCodeNegDaughter = nPart->GetPdgCode();
3064 Int_t lPDGCodePosDaughter = pPart->GetPdgCode();
3065
3066 Int_t ipMother = pPart->GetMother();
3067 Int_t inMother = nPart->GetMother();
3068
b6f9da99 3069 if(inMother<0 || inMother>=ntrkMC) lMCAssocNegDaug = 6;
3070 if(ipMother<0 || ipMother>=ntrkMC) lMCAssocPosDaug = 6;
667b678a 3071
3072 if(inMother<0 || inMother>=ntrkMC) { goto noas;}
3073 if(inMother != ipMother) { // did the negative daughter decay ?
3074 AliAODMCParticle *negMotherOfMotherPart = (AliAODMCParticle*)stackMC->UncheckedAt(inMother);
3075 if (negMotherOfMotherPart->GetMother() != ipMother)
3076 goto noas;
3077 }
3078
3079 if (ipMother<0 || ipMother>=ntrkMC)
3080 goto noas;
3081
3082 AliAODMCParticle *p0=(AliAODMCParticle*)stackMC->UncheckedAt(ipMother);
3083 if(!p0)
3084 goto noas;
3085
3086 // ----------------------------------------
3087
3088 if ( (ipMother>=fEndOfHijingEvent) &&
3089 (fEndOfHijingEvent!=-1) &&
3090 (p0->GetMother()<0) )
3091 isNaturalPart = kFALSE;
3092 else isNaturalPart = kTRUE;
3093
3094 // ----------------------------------------
3095
3096 if(fSeparateInjPart && !isNaturalPart) goto noas;
3097
3098 Int_t lPDGCodeV0 = p0->GetPdgCode();
3099
3100 // MC origin of daughters:
3101 //Decay from Weak Decay?
3102 if( (TMath::Abs(lPDGCodeV0) == kK0Short) || (TMath::Abs(lPDGCodeV0) == kLambda0) ||
3103 (TMath::Abs(lPDGCodeV0) == kSigmaMinus) || (TMath::Abs(lPDGCodeV0) == kSigmaPlus) ||
b6f9da99 3104 (TMath::Abs(lPDGCodeV0) == kSigma0) )
667b678a 3105 { lMCAssocNegDaug = 2; lMCAssocPosDaug = 2; }
b6f9da99 3106 // Cascade Gamma conversion
3107 if( (TMath::Abs(lPDGCodeV0) == kXiMinus) ||
3108 (TMath::Abs(lPDGCodeV0) == kOmegaMinus) )
3109 { lMCAssocNegDaug = 3; lMCAssocPosDaug = 3; }
667b678a 3110 // Gamma conversion
3111 else if( TMath::Abs(lPDGCodeV0) == kGamma )
b6f9da99 3112 { lMCAssocNegDaug = 4; lMCAssocPosDaug = 4; }
667b678a 3113 // Unidentied mother:
3114 else
b6f9da99 3115 { lMCAssocNegDaug = 5; lMCAssocPosDaug = 5; }
667b678a 3116
3117
3118 Int_t lIndexMotherOfMother = p0->GetMother();
3119 Int_t lPdgcodeMotherOfMother = 0;
53e7de27 3120 if (lIndexMotherOfMother != -1) {
667b678a 3121 AliAODMCParticle *lMCAODMotherOfMother=(AliAODMCParticle*)stackMC->UncheckedAt(lIndexMotherOfMother);
53e7de27 3122 if (lMCAODMotherOfMother) {lPdgcodeMotherOfMother = lMCAODMotherOfMother->GetPdgCode();}
667b678a 3123 }
3124
ca96d60a 3125 /*
667b678a 3126 // Daughter momentum cut: ! FIX it in case of AOD ! //MC or REc
3127 if ( (nPart->Pt() < fMinPtDaughter ) ||
ca96d60a 3128 (pPart->Pt() < fMinPtDaughter ) )
3129 goto noas;
3130 */
3131
667b678a 3132 if( (lPDGCodeV0 != kK0Short) &&
3133 (lPDGCodeV0 != kLambda0) &&
3134 (lPDGCodeV0 != kLambda0Bar) )
3135 goto noas;
3136
667b678a 3137
3138 // ----------------------------------------
3139
3140 // K0s
3141 if( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) &&
3142 (inMother==ipMother) && (lPDGCodeV0==310) ) {
3143
3144 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
3145 lCheckMcK0Short = kTRUE;
53e7de27 3146
667b678a 3147 }
3148 // Lambda
3149 else if( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) &&
3150 (inMother==ipMother) && (lPDGCodeV0==3122) ){
3151
9cb4cfe3 3152 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
cb30d9ae 3153 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
3154 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
3155 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
667b678a 3156 ) lComeFromSigma = kTRUE;
3157 else lComeFromSigma = kFALSE;
3158
3159 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
3160 ( !(((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
3161 && (lComeFromSigma==kTRUE) )
3162 ) lCheckMcLambda = kTRUE;
3163
31f87a49 3164
3165 if ( TMath::Abs(lPdgcodeMotherOfMother) == 3312)
3166 lComeFromXi = kTRUE;
3167
667b678a 3168 }
3169 // AntiLambda
3170 else if( (lPDGCodePosDaughter==211) && (lPDGCodeNegDaughter==-2212) &&
3171 (inMother==ipMother) && (lPDGCodeV0==-3122) ) {
3172
3173
9cb4cfe3 3174 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
cb30d9ae 3175 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
3176 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
3177 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
667b678a 3178 ) lComeFromSigma = kTRUE;
3179 else lComeFromSigma = kFALSE;
3180
3181 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
3182 ( (!((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary())
3183 && (lComeFromSigma==kTRUE) )
3184 ) lCheckMcAntiLambda = kTRUE;
3185
80c0bcd3 3186 if ( TMath::Abs(lPdgcodeMotherOfMother) == 3312 || TMath::Abs(lPdgcodeMotherOfMother) == 3322 )
31f87a49 3187 lComeFromXi = kTRUE;
3188
667b678a 3189 }
3190
3191 // ----------------------------------------
3192
3193 if ((p0->Pt())<pMin) goto noas;
3194 if (TMath::Abs(p0->Y())>fYMax ) goto noas;
3195
b6a9eae2 3196 Float_t dxAs = mcXv - p0->Xv(), dyAs = mcYv - p0->Yv(), dzAs = mcZv - p0->Zv();
3197 Float_t l = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs + dzAs*dzAs);
667b678a 3198
3199 dxAs = mcXv - pPart->Xv(); dyAs = mcYv - pPart->Yv();
b6a9eae2 3200 //Float_t ltAs = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs);
3201 Float_t ptAs = p0->Pt();
3202 Float_t rapAs = p0->Y();
3203 Float_t etaAs = p0->Eta();
9cb4cfe3 3204
3205 if(fUseEtaCut){
3206 rapAs = etaAs;
3207 }
3208
e5930cc2 3209 // phi resolution for V0-reconstruction and daughter tracks
b6f9da99 3210 Float_t resEta = p0->Eta() - v0->Eta();
b6a9eae2 3211 Float_t resPhi = p0->Phi() - v0->Phi();
e5930cc2 3212 Float_t resPt = p0->Pt() - v0->Pt();
9cb4cfe3 3213
e5930cc2 3214 Float_t resEtaPosDaug = pPart->Eta() - ptrack->Eta();
3215 Float_t resPhiPosDaug = pPart->Phi() - ptrack->Phi();
3216 Float_t resPtPosDaug = pPart->Pt() - ptrack->Pt();
3217
3218 Float_t resEtaNegDaug = nPart->Eta() - ntrack->Eta();
3219 Float_t resPhiNegDaug = nPart->Phi() - ntrack->Phi();
3220 Float_t resPtNegDaug = nPart->Pt() - ntrack->Pt();
3221
ca96d60a 3222 if ( (l < 0.01) && (ptAs<10.) ) { // Primary V0
667b678a 3223
59e0735e 3224 // K0s:
ca96d60a 3225 if(ctK && lCheckMcK0Short){
3226
3227 // Natural particles
3228 if(isNaturalPart){
53e7de27 3229
9cb4cfe3 3230 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3231
3232 fK0sAssocPt->Fill(ptAs);
3233 fK0sAssocPtRap->Fill(ptAs,rapAs,centrality);
3234 fK0sAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
53e7de27 3235
ca96d60a 3236 // Armenteros Pod. and rapidity cut
3237 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
3238
9cb4cfe3 3239 Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
3240 Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
3241 Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
3242 Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
0aa4191c 3243 Double_t effK0sShTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,fracPosDaugTPCSharedMap,fracNegDaugTPCSharedMap};
3244
ca96d60a 3245 // Distributions for the efficiency (systematics chechks)
9cb4cfe3 3246 fK0sAssocPtMassArm[curCentBin]->Fill(effK0sArm);
3247 fK0sAssocMassPtVtx[curCentBin]->Fill(effK0sVtx);
3248 fK0sAssocMassPtDCADaug[curCentBin]->Fill(effK0sDCA);
3249 fK0sAssocMassPtCPA[curCentBin]->Fill(effK0sCPA);
0aa4191c 3250 fK0sAssocMassPtShTPCcls[curCentBin]->Fill(effK0sShTPCcls);
ca96d60a 3251 }
53e7de27 3252
ca96d60a 3253 fK0sMCResEta->Fill(resEta,pt,centrality);
3254 fK0sMCResPhi->Fill(resPhi,pt,centrality);
e5930cc2 3255 fK0sMCResPt->Fill(resPt,pt,centrality);
3256
3257 fK0sPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
3258 fK0sPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
3259 fK0sPosMCResPt->Fill(resPtPosDaug,pt,centrality);
3260
3261 fK0sNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
3262 fK0sNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
3263 fK0sNegMCResPt->Fill(resPtNegDaug,pt,centrality);
3264
ca96d60a 3265 } // End selection in the dca to prim. vtx and the number of clusters
3266
3267 // Distributions for the efficiency (Systematic checks)
3268 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
9cb4cfe3 3269
ca96d60a 3270 // Cut in the DCA ToPrim Vtx
9cb4cfe3 3271 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3272
3273 Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
3274 fK0sAssocMassPtDCAPV[curCentBin]->Fill(effK0sdcaPV);
ca96d60a 3275 }
3276
9cb4cfe3 3277 // cut in the number of tpc clusters
3278 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
3279
3280 Double_t effK0sTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3281 fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(effK0sTPCcls);
3282
ca96d60a 3283 }
3284
3285 } // End selection for systematics
3286
3287 } // End natural particle selection
31f87a49 3288 // Embeded particles
3289 if(!isNaturalPart){
ca96d60a 3290
9cb4cfe3 3291 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3292
3293 fK0sAssocPtRapEmbeded->Fill(ptAs,rapAs,centrality);
3294
3295 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0)) && TMath::Abs(rapAs)<fYMax ){
3296
9cb4cfe3 3297 Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
3298 Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
3299 Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
3300 Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
0aa4191c 3301 Double_t effK0sShTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,fracPosDaugTPCSharedMap,fracNegDaugTPCSharedMap};
3302
ca96d60a 3303 // Distributions for the efficiency (systematics chechks)
9cb4cfe3 3304 fK0sAssocPtMassArmEmbeded[curCentBin]->Fill(effK0sArm);
3305 fK0sAssocMassPtVtxEmbeded[curCentBin]->Fill(effK0sVtx);
3306 fK0sAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effK0sDCA);
3307 fK0sAssocMassPtCPAEmbeded[curCentBin]->Fill(effK0sCPA);
0aa4191c 3308 fK0sAssocMassPtShTPCclsEmbeded[curCentBin]->Fill(effK0sShTPCcls);
ca96d60a 3309 }
3310
3311 } // End selection in the dca to prim. vtx and the number of clusters
3312
3313 // Distributions for the efficiency (Systematic checks)
3314 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
3315
3316 // Cut in the DCA ToPrim Vtx
9cb4cfe3 3317 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3318
3319 Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
3320 fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effK0sdcaPV);
ca96d60a 3321 }
3322
9cb4cfe3 3323 // cut in the number of tpc clusters
3324 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
3325
3326 Double_t effK0sTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3327 fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effK0sTPCcls);
ca96d60a 3328 }
3329
3330 } // End selection for systematics
3331
3332 } // End embeded particle selection
3333
3334 } // End K0s selection
9cb4cfe3 3335
59e0735e 3336 // Lambda:
9cb4cfe3 3337 if(ctL && lCheckMcLambda && (TMath::Abs(nsigPosProton)<fNSigma) ) {
ca96d60a 3338
3339 // Natural particles
3340 if(isNaturalPart){
53e7de27 3341
9cb4cfe3 3342 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
53e7de27 3343
ca96d60a 3344 fLambdaAssocPt->Fill(ptAs);
3345 fLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
3346 fLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
667b678a 3347
ca96d60a 3348 // Rapidity cut
3349 if(TMath::Abs(rapAs)<fYMax) {
31f87a49 3350
9cb4cfe3 3351 Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
3352 Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
3353 Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
3354 Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
0aa4191c 3355 Double_t effLambdaShTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,fracPosDaugTPCSharedMap,fracNegDaugTPCSharedMap};
9cb4cfe3 3356
ca96d60a 3357 // Distributions for the efficiency (systematics chechks)
9cb4cfe3 3358 fLambdaAssocMassPtRap[curCentBin]->Fill(effLambda);
3359 fLambdaAssocMassPtVtx[curCentBin]->Fill(effLambdaVtx);
3360 fLambdaAssocMassPtDCADaug[curCentBin]->Fill(effLambdaDCA);
3361 fLambdaAssocMassPtCPA[curCentBin]->Fill(effLambdaCPA);
0aa4191c 3362 fLambdaAssocMassPtShTPCcls[curCentBin]->Fill(effLambdaShTPCcls);
ca96d60a 3363
3364 if( !isCandidate2K0s && !isCandidate2LambdaBar)
9cb4cfe3 3365 fLambdaAssocMassPtRap2[curCentBin]->Fill(effLambda);
ca96d60a 3366
3367 }
3368
3369 fLambdaMCResEta->Fill(resEta,pt,centrality);
3370 fLambdaMCResPhi->Fill(resPhi,pt,centrality);
e5930cc2 3371 fLambdaMCResPt->Fill(resPt,pt,centrality);
3372
3373 fLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
3374 fLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
3375 fLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
3376
3377 fLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
3378 fLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
3379 fLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
ca96d60a 3380
3381 } // End selection in the dca to prim. vtx and the number of clusters
3382
3383 // Distributions for the efficiency (Systematic checks)
3384 if( TMath::Abs(rapAs)<fYMax ){
3385
3386 // Cut in the DCA ToPrim Vtx
9cb4cfe3 3387 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
80c0bcd3 3388
9cb4cfe3 3389 Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3390 fLambdaAssocMassPtDCAPV[curCentBin]->Fill(effLambdadcaPV);
ca96d60a 3391 }
3392
9cb4cfe3 3393 // cut in the number of tpc clusters
3394 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
3395
3396 Double_t effLambdaTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3397 fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effLambdaTPCcls);
ca96d60a 3398 }
3399
3400 } // End selection for systematics
3401
3402 } // End natural particle selection
31f87a49 3403 // Embeded particles
ca96d60a 3404 if(!isNaturalPart){
b6f9da99 3405
9cb4cfe3 3406 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3407
3408 if( TMath::Abs(rapAs)<fYMax ){
9cb4cfe3 3409
3410 Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
3411 Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
3412 Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
3413 Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
0aa4191c 3414 Double_t effLambdaShTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,fracPosDaugTPCSharedMap,fracNegDaugTPCSharedMap};
9cb4cfe3 3415
ca96d60a 3416 // Distributions for the efficiency (systematics chechks)
9cb4cfe3 3417 fLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effLambda);
3418 fLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effLambdaVtx);
3419 fLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effLambdaDCA);
3420 fLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effLambdaCPA);
0aa4191c 3421 fLambdaAssocMassPtShTPCclsEmbeded[curCentBin]->Fill(effLambdaShTPCcls);
ca96d60a 3422
3423 if( !isCandidate2K0s && !isCandidate2LambdaBar)
9cb4cfe3 3424 fLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effLambda);
ca96d60a 3425 }
3426
3427 } // End selection in the dca to prim. vtx and the number of clusters
3428
3429 // Distributions for the efficiency (Systematic checks)
3430 if( TMath::Abs(rapAs)<fYMax ){
3431
3432 // Cut in the DCA ToPrim Vtx
9cb4cfe3 3433 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3434 Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3435 fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effLambdadcaPV);
ca96d60a 3436 }
3437
9cb4cfe3 3438 // cut in the number of tpc clusters
ca96d60a 3439 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
9cb4cfe3 3440 Double_t effLambdaTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3441 fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effLambdaTPCcls);
ca96d60a 3442 }
3443
3444 } // End selection for systematics
3445
3446 } // End embeded particle selection
3447
53e7de27 3448 } // End Lambda selection
9cb4cfe3 3449
59e0735e 3450 // AntiLambda:
9cb4cfe3 3451 if (ctAL && lCheckMcAntiLambda && (TMath::Abs(nsigNegProton)<fNSigma) ){
ca96d60a 3452
3453 if(isNaturalPart){
59e0735e 3454
9cb4cfe3 3455 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
31f87a49 3456
ca96d60a 3457 fAntiLambdaAssocPt->Fill(ptAs);
3458 fAntiLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
3459 fAntiLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
3460
3461 // Rapidity cut
3462 if(TMath::Abs(rapAs)<fYMax) {
9cb4cfe3 3463
3464 Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
3465 Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
3466 Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
3467 Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
0aa4191c 3468 Double_t effAntiLambdaShTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,fracPosDaugTPCSharedMap,fracNegDaugTPCSharedMap};
ca96d60a 3469
3470 // Distributions for the efficiency (systematics chechks)
9cb4cfe3 3471 fAntiLambdaAssocMassPtRap[curCentBin]->Fill(effAntiLambda);
3472 fAntiLambdaAssocMassPtVtx[curCentBin]->Fill(effAntiLambdaVtx);
3473 fAntiLambdaAssocMassPtDCADaug[curCentBin]->Fill(effAntiLambdaDCA);
3474 fAntiLambdaAssocMassPtCPA[curCentBin]->Fill(effAntiLambdaCPA);
0aa4191c 3475 fAntiLambdaAssocMassPtShTPCcls[curCentBin]->Fill(effAntiLambdaShTPCcls);
3476
ca96d60a 3477 if( !isCandidate2K0s && !isCandidate2Lambda )
9cb4cfe3 3478 fAntiLambdaAssocMassPtRap2[curCentBin]->Fill(effAntiLambda);
ca96d60a 3479 }
3480
3481 fAntiLambdaMCResEta->Fill(resEta,pt,centrality);
3482 fAntiLambdaMCResPhi->Fill(resPhi,pt,centrality);
e5930cc2 3483 fAntiLambdaMCResPt->Fill(resPt,pt,centrality);
3484
3485 fAntiLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
3486 fAntiLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
3487 fAntiLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
3488
3489 fAntiLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
3490 fAntiLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
3491 fAntiLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
ca96d60a 3492
3493 } // End selection in the dca to prim. vtx and the number of clusters
3494
3495 // Distributions for the efficiency (Systematic checks)
3496 if( TMath::Abs(rapAs)<fYMax ){
3497
3498 // Cut in the DCA ToPrim Vtx
9cb4cfe3 3499 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3500
3501 Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3502 fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(effAntiLambdadcaPV);
ca96d60a 3503 }
3504
9cb4cfe3 3505 // cut in the number of tpc clusters
3506 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
3507 Double_t effAntiLambdaTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3508 fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effAntiLambdaTPCcls);
ca96d60a 3509 }
3510
3511 } // End selection for systematics
3512
3513 } // End natural particle selection
31f87a49 3514 // Embeded particles
ca96d60a 3515 if(!isNaturalPart){
3516
9cb4cfe3 3517 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3518
3519 if( TMath::Abs(rapAs)<fYMax ){
9cb4cfe3 3520
3521 Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
3522 Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
3523 Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
3524 Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
0aa4191c 3525 Double_t effAntiLambdaShTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,fracPosDaugTPCSharedMap,fracNegDaugTPCSharedMap};
9cb4cfe3 3526
ca96d60a 3527 // Distributions for the efficiency (systematics chechks)
9cb4cfe3 3528 fAntiLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effAntiLambda);
3529 fAntiLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effAntiLambdaVtx);
3530 fAntiLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effAntiLambdaDCA);
3531 fAntiLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effAntiLambdaCPA);
0aa4191c 3532 fAntiLambdaAssocMassPtShTPCclsEmbeded[curCentBin]->Fill(effAntiLambdaShTPCcls);
ca96d60a 3533
3534 if( !isCandidate2K0s && !isCandidate2Lambda )
9cb4cfe3 3535 fAntiLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effAntiLambda);
ca96d60a 3536 }
3537
3538 } // End selection in the dca to prim. vtx and the number of clusters
3539
3540
3541 // Distributions for the efficiency (Systematic checks)
3542 if( TMath::Abs(rapAs)<fYMax ){
3543
3544 // Cut in the DCA ToPrim Vtx
9cb4cfe3 3545 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3546
3547 Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3548 fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effAntiLambdadcaPV);
ca96d60a 3549 }
3550
3551 // cut in the number of tpc ckusters
3552 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
9cb4cfe3 3553
3554 Double_t effAntiLambdaTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3555 fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effAntiLambdaTPCcls);
ca96d60a 3556 }
3557
3558 } // End selection for systematics
3559
3560 } // End embeded particle selection
9cb4cfe3 3561
cb30d9ae 3562 } // End AntiLambda
31f87a49 3563 // Xi decay:
ca96d60a 3564 if( lComeFromXi && isNaturalPart ){
31f87a49 3565 if(lPDGCodeV0==3122) { fLambdaAssocFromXi->Fill(ptAs,centrality); }
3566 else if(lPDGCodeV0==-3122) { fAntiLambdaAssocFromXi->Fill(ptAs,centrality); }
53e7de27 3567 }
31f87a49 3568
59e0735e 3569 } // End Primary V0 selection
9cb4cfe3 3570
667b678a 3571 // After the kinematical selection of K0s and Lambdas
3572 // it might be that the daugthers are not identified through MC Association
3573 if(lMCAssocNegDaug==0)
b6f9da99 3574 lMCAssocNegDaug = 6;
667b678a 3575 if(lMCAssocPosDaug==0)
b6f9da99 3576 lMCAssocPosDaug = 6;
ca96d60a 3577
667b678a 3578 } // End MC-Association
3579
667b678a 3580 }// End Correlation Step
ca96d60a 3581
3582 // ************************************
ce2d235a 3583
3584 noas:
4a73b782 3585
667b678a 3586 // Comparing the pt of the trigger particle wrt the v0-candidate's daughter:
3587 // It is used as well for the side-band subtraction
348080d3 3588 Int_t isSameTrkPosDaug = -1;
3589 Int_t isSameTrkNegDaug = -1;
3590 if( step==kTriggerCheck ){
3591 isSameTrkPosDaug = SameTrack(trkTrig,ptrack);
3592 isSameTrkNegDaug = SameTrack(trkTrig,ntrack);
3593 }
667b678a 3594
667b678a 3595 // *******************
3596 // K0s selection
3597 // *******************
851a4af9 3598 if (ctK && (TMath::Abs(rapK0s)<fYMax) && ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && ( massK0s > 0.3979 && massK0s < 0.5981 ) && lCheckMcK0Short ) {
667b678a 3599
3600 switch(step) {
3601 case kTriggerCheck:
3602
9cb4cfe3 3603 if (isCandidate2K0s && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3604
667b678a 3605 if(pt>ptTrig){
f25a6d07 3606 fIsV0LP = 1;
3607 fPtV0LP = pt;
667b678a 3608 }
3609
ca96d60a 3610 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1){
667b678a 3611 Printf(" The LP has the same momentum in X and Y as one of the K0s daughters *** iV0 %d",iV0);
ca96d60a 3612
348080d3 3613 if(fCheckIDTrig){ // Compare properties of daughters nad
ca96d60a 3614 Float_t difNegP[3];
b6f9da99 3615 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
ca96d60a 3616 Float_t difPosP[3];
b6f9da99 3617 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
348080d3 3618 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
3619 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
ca96d60a 3620
44972668 3621 /*
ca96d60a 3622 Printf(" The LP has the same momentum in X and Y as one of the K0s daughters *** iV0 %d \n\t\t %d %d %d \n\t\t %lf %lf %lf \n\t\t %lf %lf %lf \n\t\t %lf %lf \n\t\t %lf %lf ",
3623 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
3624 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
3625 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
3626 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
3627 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
3628 );
44972668 3629 */
ca96d60a 3630
348080d3 3631 // Positive daughter
3632 if( isSameTrkPosDaug==1 ){
3633 for(Int_t i=0;i<3;i++)
3634 fCheckIDTrigPtK0s->Fill(difPosP[i],i,pt);
6668159e 3635 fCheckIDTrigPhiK0s->Fill(posDeltaPhi,0.,pt);
348080d3 3636 fCheckIDTrigEtaK0s->Fill(posDeltaEta,0.,pt);
80c0bcd3 3637 fCheckIDTrigNclsK0s->Fill(nClsTPCPos,0.,pt);
6668159e 3638 }
348080d3 3639 // Negative daughter
3640 if( isSameTrkNegDaug==1 ){
3641 for(Int_t i=0;i<3;i++)
099a1ea9 3642 fCheckIDTrigPtK0s->Fill(difNegP[i],i+3,pt);
6668159e 3643 fCheckIDTrigPhiK0s->Fill(negDeltaPhi,2.,pt);
348080d3 3644 fCheckIDTrigEtaK0s->Fill(negDeltaEta,2.,pt);
80c0bcd3 3645 fCheckIDTrigNclsK0s->Fill(nClsTPCNeg,2.,pt);
6668159e 3646 }
3647
3648 } // End check ID
ca96d60a 3649
3650
348080d3 3651 fTriggerParticles->RemoveAt(iArray);
b6f9da99 3652 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
348080d3 3653
1ade0359 3654
6668159e 3655 } // Close isTrigFromV0daug
ca96d60a 3656
348080d3 3657 }// End K0s Mass cut
ca96d60a 3658
667b678a 3659 break; // End K0s selection for TriggerCheck
348080d3 3660 case kReconstruction:
3661
9cb4cfe3 3662 if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
ca96d60a 3663
3664 if(isNaturalPart) fK0sMass->Fill(massK0s,pt,centrality);
3665 else fK0sMassEmbeded->Fill(massK0s,pt,centrality);
3666
80c0bcd3 3667 fK0sMassPtEta->Fill(massK0s,pt,lEta);
9cb4cfe3 3668 fK0sMassPtRap[curCentBin]->Fill(massK0s,pt,rapK0s);
ca96d60a 3669 fK0sMassPtPhi->Fill(massK0s,pt,lPhi);
348080d3 3670
9cb4cfe3 3671
675cf138 3672 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
ca96d60a 3673 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 3) );
9cb4cfe3 3674
0aa4191c 3675 fK0sPosDaugFracShTPCcls->Fill(massK0s,pt,fracPosDaugTPCSharedMap);
3676 fK0sNegDaugFracShTPCcls->Fill(massK0s,pt,fracNegDaugTPCSharedMap);
1ade0359 3677
667b678a 3678 }
348080d3 3679
ca96d60a 3680 if( fDoQA && lCheckMcK0Short && isNaturalPart && (pt<10.) ){ // Quality Assurance
348080d3 3681
ca96d60a 3682 // Invariant Mass cut
3683 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
348080d3 3684
9cb4cfe3 3685 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3686 fK0sDCAPosDaug->Fill(dcaPos,pt);
3687 fK0sDCANegDaug->Fill(dcaNeg,pt);
3688 }
3689
3690 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
3691
9cb4cfe3 3692 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC ) ){
ca96d60a 3693 fK0sPtPosDaug->Fill(pt,lPtPos);
3694 fK0sPtNegDaug->Fill(pt,lPtNeg);
3695
3696 fK0sPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3697 fK0sPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
6668159e 3698
ca96d60a 3699 fK0sDecayPos->Fill(dx,dy,pt);
3700 fK0sDecayVertex->Fill(lt,pt);
6668159e 3701
ca96d60a 3702 fK0sCPA->Fill(cpa,pt);
3703 fK0sDCAV0Daug->Fill(dca,pt);
3704
3705 fK0sNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3706 fK0sNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3707 }
3708
3709 fK0sNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3710 fK0sNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3711 }
3712
3713 } // End selection in mass
3714
3715 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
3716 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
3717
9cb4cfe3 3718 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3719 fK0sBckgDCAPosDaug->Fill(dcaPos,pt);
3720 fK0sBckgDCANegDaug->Fill(dcaNeg,pt);
3721 }
6668159e 3722
ca96d60a 3723 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
6668159e 3724
9cb4cfe3 3725 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3726 fK0sBckgPtPosDaug->Fill(pt,lPtPos);
3727 fK0sBckgPtNegDaug->Fill(pt,lPtNeg);
6668159e 3728
ca96d60a 3729 fK0sBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3730 fK0sBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
6668159e 3731
ca96d60a 3732 fK0sBckgDecayPos->Fill(dx,dy,pt);
3733 fK0sBckgDecayVertex->Fill(lt,pt);
6668159e 3734
ca96d60a 3735 fK0sBckgCPA->Fill(cpa,pt);
3736 fK0sBckgDCAV0Daug->Fill(dca,pt);
6668159e 3737
ca96d60a 3738 fK0sBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3739 fK0sBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3740 }
b6f9da99 3741
ca96d60a 3742 fK0sBckgNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3743 fK0sBckgNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3744
3745 }
6668159e 3746
ca96d60a 3747 }// End selection in outside the mass cut
3748
3749 } // End QA
667b678a 3750
3751 break; // End K0s selection for Corrleation
3752 default:
3753 Printf( " Selection of 'step' is not set properly");
3754 break;
3755
3756 }// End switch
3757
3758 } // End K0s selection
ce2d235a 3759
667b678a 3760 // *******************
3761 // Lambda selection
3762 // *******************
851a4af9 3763 if ( ctL && (TMath::Abs(rapLambda)<fYMax) && (massLambda > 1.0649 && massLambda < 1.1651 ) && (TMath::Abs(nsigPosProton)<fNSigma) && lCheckMcLambda ){
667b678a 3764
667b678a 3765 switch(step) {
3766 case kTriggerCheck:
3767
9cb4cfe3 3768 if (isCandidate2Lambda && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && !isCandidate2K0s && !isCandidate2LambdaBar ){
ca96d60a 3769
667b678a 3770 if(pt>ptTrig) {
f25a6d07 3771 fIsV0LP = 1;
3772 fPtV0LP = pt;
667b678a 3773 }
3774
348080d3 3775 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
667b678a 3776 Printf(" The LP has the same momentum in X and Y as one of the Lambda daughters *** iV0 %d",iV0);
6668159e 3777
348080d3 3778 if(fCheckIDTrig){ // Compare properties of daughters nad
3779 Float_t difNegP[3];
b6f9da99 3780 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
348080d3 3781 Float_t difPosP[3];
b6f9da99 3782 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
348080d3 3783 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
3784 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
3785
44972668 3786 /*
ca96d60a 3787 Printf(" The LP has the same momentum in X and Y as one of the Lambda daughters *** iV0 %d \n\t\t %d %d %d \n\t\t %lf %lf %lf \n\t\t %lf %lf %lf \n\t\t %lf %lf \n\t\t %lf %lf ",
3788 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
3789 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
3790 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
3791 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
3792 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
3793 );
44972668 3794 */
3795
348080d3 3796 // Positive daughter
3797 if( isSameTrkPosDaug==1 ){
3798 for(Int_t i=0;i<3;i++)
3799 fCheckIDTrigPtLambda->Fill(difPosP[i],i,pt);
6668159e 3800 fCheckIDTrigPhiLambda->Fill(posDeltaPhi,0.,pt);
348080d3 3801 fCheckIDTrigEtaLambda->Fill(posDeltaEta,0.,pt);
80c0bcd3 3802 fCheckIDTrigNclsLambda->Fill(nClsTPCPos,0.,pt);
6668159e 3803 }
348080d3 3804 // Negative daughter
3805 if( isSameTrkNegDaug==1 ){
3806 for(Int_t i=0;i<3;i++)
099a1ea9 3807 fCheckIDTrigPtLambda->Fill(difNegP[i],i+3,pt);
6668159e 3808 fCheckIDTrigPhiLambda->Fill(negDeltaPhi,2.,pt);
348080d3 3809 fCheckIDTrigEtaLambda->Fill(negDeltaEta,2.,pt);
80c0bcd3 3810 fCheckIDTrigNclsLambda->Fill(nClsTPCNeg,2.,pt);
6668159e 3811 }
348080d3 3812
6668159e 3813 } // End check ID
348080d3 3814
3815 fTriggerParticles->RemoveAt(iArray);
b6f9da99 3816 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
348080d3 3817
6668159e 3818 } // Close isTrigFromV0daug
3819
348080d3 3820 } // End Lambda Mass cut
667b678a 3821 break; // End Lambda selection for TriggerCheck
348080d3 3822 case kReconstruction:
667b678a 3823
9cb4cfe3 3824 if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
ca96d60a 3825
3826 if(isNaturalPart) fLambdaMass->Fill(massLambda,pt,centrality);
3827 else fLambdaMassEmbeded->Fill(massLambda,pt,centrality);
667b678a 3828
ca96d60a 3829 if( !isCandidate2K0s && !isCandidate2LambdaBar){
3830 if(isNaturalPart) fLambdaMass2->Fill(massLambda,pt,centrality);
3831 else fLambdaMass2Embeded->Fill(massLambda,pt,centrality);
3832 }
3833
80c0bcd3 3834 fLambdaMassPtEta->Fill(massLambda,pt,lEta);
9cb4cfe3 3835 fLambdaMassPtRap[curCentBin]->Fill(massLambda,pt,rapLambda);
ca96d60a 3836 fLambdaMassPtPhi->Fill(massLambda,pt,lPhi);
667b678a 3837
9cb4cfe3 3838
675cf138 3839 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
ca96d60a 3840 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 4) );
9cb4cfe3 3841
1ade0359 3842
0aa4191c 3843 fLambdaPosDaugFracShTPCcls->Fill(massLambda,pt,fracPosDaugTPCSharedMap);
3844 fLambdaNegDaugFracShTPCcls->Fill(massLambda,pt,fracNegDaugTPCSharedMap);
3845
ca96d60a 3846 }
3847
667b678a 3848 // Invariant Mass cut
ca96d60a 3849 if(fDoQA && lCheckMcLambda && isNaturalPart && (pt<10.)){ // Quality Assurance
6668159e 3850
ca96d60a 3851 // Invariant Mass cut
3852 if (TMath::Abs(mLambda-massLambda) < 3*sL) {
6668159e 3853
9cb4cfe3 3854 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3855 fLambdaDCAPosDaug->Fill(dcaPos,pt);
3856 fLambdaDCANegDaug->Fill(dcaNeg,pt);
3857 }
6668159e 3858
ca96d60a 3859 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
6668159e 3860
9cb4cfe3 3861 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3862 fLambdaPtPosDaug->Fill(pt,lPtPos);
3863 fLambdaPtNegDaug->Fill(pt,lPtNeg);
6668159e 3864
ca96d60a 3865 fLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3866 fLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
6668159e 3867
ca96d60a 3868 fLambdaDecayPos->Fill(dx,dy,pt);
3869 fLambdaDecayVertex->Fill(lt,pt);
b6f9da99 3870
ca96d60a 3871 fLambdaCPA->Fill(cpa,pt);
3872 fLambdaDCAV0Daug->Fill(dca,pt);
348080d3 3873
ca96d60a 3874 fLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3875 fLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3876 }
6668159e 3877
ca96d60a 3878 fLambdaNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3879 fLambdaNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
6668159e 3880
ca96d60a 3881 }
3882
3883 } // End selection in mass
3884
3885 if( (TMath::Abs(mLambda-massLambda + 6.5*sL) < 1.5*sL) ||
3886 (TMath::Abs(mLambda-massLambda - 6.5*sL) < 1.5*sL) ){
6668159e 3887
9cb4cfe3 3888 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3889 fLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
3890 fLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
3891 }
6668159e 3892
ca96d60a 3893 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
6668159e 3894
9cb4cfe3 3895 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 3896 fLambdaBckgPtPosDaug->Fill(pt,lPtPos);
3897 fLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
b6f9da99 3898
ca96d60a 3899 fLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3900 fLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
3901
3902 fLambdaBckgDecayPos->Fill(dx,dy,pt);
3903 fLambdaBckgDecayVertex->Fill(lt,pt);
3904
3905 fLambdaBckgCPA->Fill(cpa,pt);
3906 fLambdaBckgDCAV0Daug->Fill(dca,pt);
6668159e 3907
ca96d60a 3908 fLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3909 fLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3910 }
3911
3912 fLambdaBckgNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3913 fLambdaBckgNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3914 }
3915
3916 }// End selection in outside the mass cut
3917
3918 } // End QA
667b678a 3919
3920 break; // End Lambda selection for Correlation
3921 default:
3922 Printf(" Selection of 'step' is not set properly");
3923 break;
3924
3925 }// End switch
3926
3927 } // End Lambda selection
3928
3929 // *******************
3930 // AntiLambda selection
3931 // *******************
851a4af9 3932 if ( ctAL && (TMath::Abs(rapLambda)<fYMax) && (massAntiLambda > 1.0649 && massAntiLambda < 1.1651 ) && (TMath::Abs(nsigNegProton)<fNSigma) && lCheckMcAntiLambda ) {
667b678a 3933
3934 switch(step) {
3935 case kTriggerCheck:
3936
9cb4cfe3 3937 if (isCandidate2LambdaBar && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && !isCandidate2K0s && !isCandidate2Lambda ){
ca96d60a 3938
667b678a 3939 if(pt>ptTrig) {
f25a6d07 3940 fIsV0LP = 1;
3941 fPtV0LP = pt;
667b678a 3942 }
3943
348080d3 3944 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
667b678a 3945 Printf(" The LP has the same momentum in X and Y as one of the AntiLambda daughters *** iV0 %d",iV0);
6668159e 3946
348080d3 3947 if(fCheckIDTrig){ // Compare properties of daughters nad
3948 Float_t difNegP[3];
b6f9da99 3949 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
348080d3 3950 Float_t difPosP[3];
b6f9da99 3951 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
348080d3 3952 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
3953 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
44972668 3954
3955 /*
ca96d60a 3956 Printf(" The LP has the same momentum in X and Y as one of the AntiLambda daughters *** iV0 %d \n\t\t %d %d %d \n\t\t %lf %lf %lf \n\t\t %lf %lf %lf \n\t\t %lf %lf \n\t\t %lf %lf ",
3957 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
3958 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
3959 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
3960 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
3961 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
3962 );
44972668 3963 */
3964
348080d3 3965 // Positive daughter
3966 if( isSameTrkPosDaug==1 ){
3967 for(Int_t i=0;i<3;i++)
3968 fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i,pt);
3969 fCheckIDTrigPhiAntiLambda->Fill(posDeltaPhi,0.,pt);
3970 fCheckIDTrigEtaAntiLambda->Fill(posDeltaEta,0.,pt);
80c0bcd3 3971 fCheckIDTrigNclsAntiLambda->Fill(nClsTPCPos,0.,pt);
348080d3 3972 }
3973 // Negative daughter
3974 if( isSameTrkNegDaug==1 ){
3975 for(Int_t i=0;i<3;i++)
099a1ea9 3976 fCheckIDTrigPtAntiLambda->Fill(difNegP[i],i+3,pt);
348080d3 3977 fCheckIDTrigPhiAntiLambda->Fill(negDeltaPhi,2.,pt);
3978 fCheckIDTrigEtaAntiLambda->Fill(negDeltaEta,2.,pt);
80c0bcd3 3979 fCheckIDTrigNclsAntiLambda->Fill(nClsTPCNeg,2.,pt);
348080d3 3980 }
6668159e 3981
348080d3 3982 } // End check ID
3983
1ade0359 3984
348080d3 3985 fTriggerParticles->RemoveAt(iArray);
b6f9da99 3986 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
348080d3 3987
3988 }// Close isTrigFromV0daug
667b678a 3989
348080d3 3990 }// End AntiLambda Mass cut
59e0735e 3991 break; // End AntiLambda selection for CheckTrigger
348080d3 3992 case kReconstruction:
59e0735e 3993
9cb4cfe3 3994 if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ) {
59e0735e 3995
ca96d60a 3996 if(isNaturalPart) fAntiLambdaMass->Fill(massAntiLambda,pt,centrality);
3997 else fAntiLambdaMassEmbeded->Fill(massAntiLambda,pt,centrality);
59e0735e 3998
ca96d60a 3999 if( !isCandidate2K0s && !isCandidate2Lambda) {
4000 if(isNaturalPart) fAntiLambdaMass2->Fill(massAntiLambda,pt,centrality);
4001 else fAntiLambdaMass2Embeded->Fill(massAntiLambda,pt,centrality);
4002 }
59e0735e 4003
80c0bcd3 4004 fAntiLambdaMassPtEta->Fill(massAntiLambda,pt,lEta);
9cb4cfe3 4005 fAntiLambdaMassPtRap[curCentBin]->Fill(massAntiLambda,pt,rapLambda);
ca96d60a 4006 fAntiLambdaMassPtPhi->Fill(massAntiLambda,pt,lPhi);
4007
9cb4cfe3 4008
675cf138 4009 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
ca96d60a 4010 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 5) );
0aa4191c 4011
4012 fAntiLambdaPosDaugFracShTPCcls->Fill(massAntiLambda,pt,fracPosDaugTPCSharedMap);
4013 fAntiLambdaNegDaugFracShTPCcls->Fill(massAntiLambda,pt,fracNegDaugTPCSharedMap);
4014
ca96d60a 4015 }
4016
4017 if( fDoQA && lCheckMcAntiLambda && isNaturalPart && (pt<10.) ){ // Quality Assurance
59e0735e 4018
ca96d60a 4019 // Invariant Mass cut
4020 if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) {
59e0735e 4021
9cb4cfe3 4022 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 4023 fAntiLambdaDCAPosDaug->Fill(dcaPos,pt);
4024 fAntiLambdaDCANegDaug->Fill(dcaNeg,pt);
4025 }
b6f9da99 4026
ca96d60a 4027 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
4028
9cb4cfe3 4029 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
cb30d9ae 4030 fAntiLambdaPtPosDaug->Fill(pt,lPtPos);
4031 fAntiLambdaPtNegDaug->Fill(pt,lPtNeg);
ca96d60a 4032
cb30d9ae 4033 fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
4034 fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
ca96d60a 4035
cb30d9ae 4036 fAntiLambdaDecayPos->Fill(dx,dy,pt);
4037 fAntiLambdaDecayVertex->Fill(lt,pt);
ca96d60a 4038
cb30d9ae 4039 fAntiLambdaCPA->Fill(cpa,pt);
4040 fAntiLambdaDCAV0Daug->Fill(dca,pt);
ca96d60a 4041
cb30d9ae 4042 fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
4043 fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
4044 }
ca96d60a 4045
4046 fAntiLambdaNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
4047 fAntiLambdaNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
4048 }
59e0735e 4049
ca96d60a 4050 } // End selection in mass
59e0735e 4051
ca96d60a 4052 if( (TMath::Abs(mLambda-massAntiLambda + 6.5*sAL) < 1.5*sAL) ||
4053 (TMath::Abs(mLambda-massAntiLambda - 6.5*sAL) < 1.5*sAL) ){
348080d3 4054
9cb4cfe3 4055 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 4056 fAntiLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
4057 fAntiLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
4058 }
59e0735e 4059
ca96d60a 4060 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
59e0735e 4061
9cb4cfe3 4062 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
ca96d60a 4063 fAntiLambdaBckgPtPosDaug->Fill(pt,lPtPos);
4064 fAntiLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
4065
4066 fAntiLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
4067 fAntiLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
4068
4069 fAntiLambdaBckgDecayPos->Fill(dx,dy,pt);
4070 fAntiLambdaBckgDecayVertex->Fill(lt,pt);
4071
4072 fAntiLambdaBckgCPA->Fill(cpa,pt);
4073 fAntiLambdaBckgDCAV0Daug->Fill(dca,pt);
59e0735e 4074
ca96d60a 4075 fAntiLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
4076 fAntiLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
4077 }
4078
4079 fAntiLambdaBckgNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
4080 fAntiLambdaBckgNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
59e0735e 4081
ca96d60a 4082 }
59e0735e 4083
ca96d60a 4084 }// End selection in outside the mass cut
4085
4086 } // End QA
4087
667b678a 4088 break;
4089 default:
4090 Printf( " Selection of 'step' is not set properly");
4091 break;
4092 }// End switch
4093
4094 } // End AntiLambda selection
ca96d60a 4095
667b678a 4096 } // End V0 loop
4097
667b678a 4098}
4099
4100//___________________________________________________________________________________________
4101
f25a6d07 4102void AliAnalysisTaskLambdaOverK0sJets::TriggerParticle()
667b678a 4103{
348080d3 4104 // Obtain the trigger particles of the event to perform the correlations in phi and eta
667b678a 4105
4106 // ----------------------------
348080d3 4107 // 1. Trigger particles
b6f9da99 4108 TClonesArray *stack = 0x0;
4109 if(fIsMC){
4110 TList *lst = fAOD->GetList();
4111 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
4112 if (!stack) {
4113 Printf("ERROR: stack not available");
4114 return;
4115 }
4116 }
4117
667b678a 4118 Int_t nTrk= fAOD->GetNumberOfTracks();
348080d3 4119 AliCentrality *cent = fAOD->GetCentrality();
4120 Float_t centrality = cent->GetCentralityPercentile("V0M");
4121 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
4122 Float_t zv=vtx->GetZ();
773f3106 4123 Double_t pt = -1000.;
4124 Double_t eta = -1000.;
4125 Double_t phi = -1000.;
4126 Float_t resPt = -1000.;
4127 Float_t resEta = -1000.;
4128 Float_t resPhi = -1000.;
667b678a 4129
348080d3 4130 for (Int_t i=0; i<nTrk; i++) {
f15c1f69 4131 const AliAODTrack *t = dynamic_cast<const AliAODTrack*>(fAOD->GetTrack(i));
4132 if(!t) AliFatal("Not a standard AOD");
59e0735e 4133 if(!AcceptTrack(t)) continue;
773f3106 4134 pt=t->Pt();
4135 eta=t->Eta();
4136
b6f9da99 4137 if( (pt>fTrigPtMin) && (pt<fTrigPtMax) && (TMath::Abs(eta)<fTrigEtaMax) ) {
773f3106 4138
4139 phi=t->Phi();
b6f9da99 4140 fTriggerParticles->Add( new AliMiniParticle(centrality, zv, i, pt, phi, eta, 0, 0, 1) );
4141
4142 if(fIsMC){
4143 Int_t lab = TMath::Abs(t->GetLabel());
4144 AliAODMCParticle *part=(AliAODMCParticle*)stack->UncheckedAt(lab);
4145
773f3106 4146 resPt = (part->Pt() - pt)/pt;
4147 resEta = part->Eta() - eta;
4148 resPhi = part->Phi() - phi;
b6f9da99 4149
4150 fTriggerMCResPt->Fill(resPt,pt,centrality);
4151 fTriggerMCResEta->Fill(resEta,pt,centrality);
4152 fTriggerMCResPhi->Fill(resPhi,pt,centrality);
4153 }
4154
4155 }
667b678a 4156 }
4157
667b678a 4158 // ----------------------------
667b678a 4159 // 2. Checking if the trigger particle
4160 // might be a daughter from the V0-candidate
9cb4cfe3 4161
348080d3 4162 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
4163 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
4164 Int_t id = trig->ID();
4165 V0Loop(kTriggerCheck,kFALSE,i,id);
667b678a 4166 }
9cb4cfe3 4167
348080d3 4168
667b678a 4169}
4170
4171//___________________________________________________________________________________________
4172
4173void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
4174{
f25a6d07 4175 // Main loop for the Analysis
4176
4177 // Initializing global variables for the correlation studies (mandatory for each event).
4178 // ---- 1) Trigger Particle: id track
4179 fIdTrigger = -1;
4180 // ---- 2) TriggerCheck: Variables used to crosscheck if trigger particle is a V0 daughter ---- //
f25a6d07 4181 fIsV0LP = 0;
4182 fPtV0LP = -10.;
4183 fIsSndCheck = 0;
4184
4185 // Getting AOD Event
667b678a 4186 fAOD = (AliAODEvent *)InputEvent();
4187 fEvents->Fill(0); //event counter
4188
4189 if (!fAOD) {
4190 Printf("ERROR: aod not available");
4191 return;
4192 }
4193 fEvents->Fill(1);
4194
4195 // Physics selection
4196 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4197 AliInputEventHandler *hdr=(AliInputEventHandler*)mgr->GetInputEventHandler();
4198 UInt_t maskIsSelected = hdr->IsEventSelected();
348080d3 4199 Bool_t isSelected = kFALSE;
4200
ca96d60a 4201 Bool_t isSelectedCentral = kFALSE;
4202 Bool_t isSelectedSemiCentral = kFALSE;
4203 Bool_t isSelectedMB = kFALSE;
b6f9da99 4204 if( fCollision.Contains("PbPb2010") )
348080d3 4205 isSelected = (maskIsSelected & AliVEvent::kMB);
b6f9da99 4206 else if( fCollision.Contains("PbPb2011") ){
ca96d60a 4207 isSelectedCentral = maskIsSelected & AliVEvent::kCentral;
4208 isSelectedSemiCentral = maskIsSelected & AliVEvent::kSemiCentral;
4209 isSelectedMB = maskIsSelected & AliVEvent::kMB;
b6f9da99 4210 if( isSelectedCentral || isSelectedSemiCentral || isSelectedMB ) isSelected = kTRUE;
348080d3 4211 }
4212
4213 if(!isSelected) return;
667b678a 4214 fEvents->Fill(2);
4215
4216 // Centrality selection
4217 AliCentrality *cent = fAOD->GetCentrality();
b6a9eae2 4218 Float_t centrality = cent->GetCentralityPercentile("V0M");
667b678a 4219 fCentrality->Fill(centrality);
4220
4221 if (!cent->IsEventInCentralityClass(fCentMin,fCentMax,"V0M")) return;
4222 fEvents->Fill(3);
4223
ce2d235a 4224 Int_t curCentBin = CentBin(centrality);
4225 if(curCentBin!=-1) fEvtPerCent->Fill(0.,curCentBin);
4226
773f3106 4227 // Global primary vertex
667b678a 4228 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
4229 if (vtx->GetNContributors()<3) return;
4230 fEvents->Fill(4);
ce2d235a 4231 if(curCentBin!=-1) fEvtPerCent->Fill(1,curCentBin);
667b678a 4232
773f3106 4233 // SPD primary vertex
4234 const AliAODVertex *vtxSPD = fAOD->GetPrimaryVertexSPD();
4235 if (vtxSPD->GetNContributors()<3) return;
4236 fEvents->Fill(5);
ce2d235a 4237 if(curCentBin!=-1) fEvtPerCent->Fill(2,curCentBin);
4238
773f3106 4239 // Correlaiton between global Zvtx and SPD Zvtx
4240 Float_t zv=vtx->GetZ(), zvSPD=vtxSPD->GetZ();
4241 fPrimayVtxGlobalvsSPD->Fill(zv,zvSPD);
4242
773f3106 4243 Float_t xv=vtx->GetX(), yv=vtx->GetY();
81c9e762 4244 const Float_t priVtx[3] = {xv,yv,zv};
667b678a 4245
4246 if (TMath::Abs(zv) > 10.) return;
ce2d235a 4247 fEvents->Fill(6);
4248 if(curCentBin!=-1) fEvtPerCent->Fill(3,curCentBin);
4249
4250 if( TMath::Abs( zv - zvSPD ) > 0.5) return;
773f3106 4251 fEvents->Fill(7);
ce2d235a 4252 if(curCentBin!=-1) fEvtPerCent->Fill(4,curCentBin);
4253
ca96d60a 4254 fPrimaryVertexX->Fill(xv);
4255 fPrimaryVertexY->Fill(yv);
4256 fPrimaryVertexZ->Fill(zv);
4257
53e7de27 4258 fCentrality2->Fill(centrality);
667b678a 4259
ca96d60a 4260 if(isSelectedCentral) fCentralityTrig->Fill(centrality,1);
4261 if(isSelectedSemiCentral) fCentralityTrig->Fill(centrality,2);
4262 if(isSelectedMB) fCentralityTrig->Fill(centrality,3);
4263
4264
44972668 4265 // Protect the code: only interested in events with centrality < 40%
4266 if(centrality>=40.) return;
4267
ca96d60a 4268 // Event plane
4269 AliEventplane *EventPlane = InputEvent()->GetEventplane();
4270 Double_t eventPlane = EventPlane->GetEventplane("V0",InputEvent(),2);
4271
4272 eventPlane = ( (eventPlane < 0) ? eventPlane + TMath::Pi() : eventPlane );
4273 eventPlane = ( ( eventPlane > TMath::Pi() ) ? eventPlane - TMath::Pi() : eventPlane );
4274
0e7d3472 4275 // Magnetic field sign
81c9e762 4276 const Float_t bSign = (fAOD->GetMagneticField() > 0) ? 1 : -1;
0e7d3472 4277
348080d3 4278 // Getting PID Response
4279 fPIDResponse = hdr->GetPIDResponse();
667b678a 4280
348080d3 4281 Int_t curVtxBin = VtxBin(zv);
ce2d235a 4282
53e7de27 4283
348080d3 4284 // **********************************************
4285 // Triggered Particle - Trigger Particle
4286 fTriggerParticles = new TObjArray();
4287 fTriggerParticles->SetOwner(kTRUE);
4288 TriggerParticle();
4289
4290 // V0-candidate is the highest particle in the event:
4291 if(fIsV0LP) { fEvents->Fill(8); fTriggerIsV0->Fill(fPtV0LP);}
667b678a 4292
348080d3 4293 Int_t NtrigPerEvnt = 0;
ca96d60a 4294 Float_t phi2 = -100.;
348080d3 4295 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
4296 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
4297
4298 if(trig->WhichCandidate()==0){
348080d3 4299 fTriggerComingFromDaug->Fill(trig->Pt());
4300 fCheckTriggerFromV0Daug->Fill(1);
4301 if(fIsV0LP) fCheckTriggerFromV0Daug->Fill(2);
4302 }
4303 else if( trig->WhichCandidate()==1){
348080d3 4304 fCheckTriggerFromV0Daug->Fill(0);
78c6fbbe 4305 fTriggerPtCentCh->Fill(trig->Pt(),centrality,zv);
ca96d60a 4306
4307 phi2 = ( (trig->Phi() > TMath::Pi()) ? trig->Phi() - TMath::Pi() : trig->Phi() ) ;
4308 fTriggerEventPlane->Fill(phi2);
4309
348080d3 4310 NtrigPerEvnt++;
ca96d60a 4311
667b678a 4312 }
4313
4314 }
348080d3 4315
ca96d60a 4316 if(NtrigPerEvnt>0) fEvents->Fill(11);
4317 else fEvents->Fill(12);
4318
b6f9da99 4319 fNTrigPerEvt->Fill(NtrigPerEvnt,centrality);
59e0735e 4320
667b678a 4321 // ******************************************
4322 // Start loop over MC particles
b6f9da99 4323 fTriggerPartMC = new TObjArray();
4324 fTriggerPartMC->SetOwner(kTRUE);
4325 fAssocPartMC = new TObjArray();
4326 fAssocPartMC->SetOwner(kTRUE);
4327
59e0735e 4328 fEndOfHijingEvent = -1;
667b678a 4329 TClonesArray *stack = 0x0;
b6a9eae2 4330 Float_t mcXv=0., mcYv=0., mcZv=0.;
667b678a 4331
4332 if(fIsMC) {
4333
4334 TList *lst = fAOD->GetList();
4335 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
4336 if (!stack) {
4337 Printf("ERROR: stack not available");
4338 return;
4339 }
4340
4341 AliAODMCHeader *mcHdr =
4342 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
4343
4344 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
4345
4346 Int_t nTrkMC = stack->GetEntriesFast();
4347 // -----------------------------------------
4348 // --------- Trigger particle --------------
4349 // -----------------------------------------
80c0bcd3 4350 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
667b678a 4351 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
4352 if(!p0) continue;
667b678a 4353
80c0bcd3 4354 // ----------------------------------------
31f87a49 4355 // For injected MC: it determines where HIJING event ends
667b678a 4356 if (fEndOfHijingEvent==-1) {
4357 if ( ( p0->GetStatus() == 21 ) ||
4358 ( (p0->GetPdgCode() == 443) &&
4359 (p0->GetMother() == -1) &&
4360 (p0->GetDaughter(0) == (iTrkMC+1))) ) {
4361 fEndOfHijingEvent = iTrkMC;
4362 }
4363 }
4364
80c0bcd3 4365 // ----------------------------------------
667b678a 4366 Int_t isNaturalPart = 1;
4367 if ( (iTrkMC>=fEndOfHijingEvent) &&
4368 (fEndOfHijingEvent!=-1) &&
4369 (p0->GetMother()<0) )
4370 isNaturalPart = 0;
4371
80c0bcd3 4372 // ----------------------------------------
ca96d60a 4373 if(p0->Charge()==0) continue;
667b678a 4374 if(isNaturalPart == 0) continue;
4375 if( !p0->IsPhysicalPrimary() ) continue;
ca96d60a 4376
4377 if(TMath::Abs(p0->Eta())>fTrigEtaMax) continue;
80c0bcd3 4378 if( ( p0->Pt() < fTrigPtMCMin ) || ( p0->Pt() > fTrigPtMCMax ) ) continue;
ca96d60a 4379
b6f9da99 4380 fTriggerPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, p0->Pt(), p0->Phi(), p0->Eta(), 0, 0, 1) );
667b678a 4381
b6f9da99 4382 } // End loop over charged particles
667b678a 4383
667b678a 4384 // -----------------------------------------
4385 // ---------- Strange particles ------------
4386 // -----------------------------------------
de2daf46 4387 //fEndOfHijingEvent = -1;
80c0bcd3 4388 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
667b678a 4389 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
4390 if(!p0) continue;
b6f9da99 4391
80c0bcd3 4392 // ----------------------------------------
31f87a49 4393 Int_t lPdgcodeCurrentPart = p0->GetPdgCode();
667b678a 4394 if ( (lPdgcodeCurrentPart != kK0Short) &&
4395 (lPdgcodeCurrentPart != kLambda0) &&
80c0bcd3 4396 (lPdgcodeCurrentPart != kLambda0Bar) &&
4397 //Adding Xi- and Xi0 particles
4398 (lPdgcodeCurrentPart != kXiMinus) &&
4399 (lPdgcodeCurrentPart != 3322) ) continue;
667b678a 4400
4401 // ----------------------------------------
667b678a 4402 Int_t isNaturalPart = 1;
4403 if ( (iTrkMC>=fEndOfHijingEvent) &&
4404 (fEndOfHijingEvent!=-1) &&
4405 (p0->GetMother()<0) )
4406 isNaturalPart = 0;
80c0bcd3 4407
4408 if( lPdgcodeCurrentPart != kXiMinus )
4409 fInjectedParticles->Fill(isNaturalPart);
667b678a 4410
59e0735e 4411 if(fSeparateInjPart && !isNaturalPart) continue;
667b678a 4412
4413 // ----------------------------------------
b6a9eae2 4414 Float_t lRapCurrentPart = MyRapidity(p0->E(),p0->Pz());
4415 Float_t lEtaCurrentPart = p0->Eta();
4416 Float_t lPhiCurrentPart = p0->Phi();
4417 Float_t lPtCurrentPart = p0->Pt();
667b678a 4418
9cb4cfe3 4419 if(fUseEtaCut){
4420 lRapCurrentPart = lEtaCurrentPart;
4421 }
4422
667b678a 4423 Int_t iCurrentMother = p0->GetMother();
4424 AliAODMCParticle *pCurrentMother = (AliAODMCParticle *)stack->At(iCurrentMother);
4425 Int_t lPdgCurrentMother = 0;
4426 if (iCurrentMother == -1) { lPdgCurrentMother = 0;}
4427 else { lPdgCurrentMother = pCurrentMother->GetPdgCode(); }
4428
4429 Int_t id0 = p0->GetDaughter(0);
4430 Int_t id1 = p0->GetDaughter(1);
4431
4432 //if ( id0 == id1 ) continue;
4433 if ( (id0 < 0 || id1 < 0) ||
4434 (id0 >=nTrkMC || id1 >= nTrkMC) ) continue;
4435
4436 AliAODMCParticle *pDaughter0 = (AliAODMCParticle *)stack->UncheckedAt(id0);
4437 AliAODMCParticle *pDaughter1 = (AliAODMCParticle *)stack->UncheckedAt(id1);
4438 if (!pDaughter0 || !pDaughter1) continue;
4439
bef5b5b9 4440 /*
cb30d9ae 4441 if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
4442 TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
667b678a 4443 continue;
bef5b5b9 4444 */
667b678a 4445 // Daughter momentum cut: ! FIX it in case of AOD !
ca96d60a 4446 /*
cb30d9ae 4447 if ( ( pDaughter0->Pt() < fMinPtDaughter ) ||
4448 ( pDaughter1->Pt() < fMinPtDaughter ) )
4449 continue;
ca96d60a 4450 */
667b678a 4451
80c0bcd3 4452 if ((p0->Pt())<pMin || (p0->Pt())>100. ) continue;
667b678a 4453 if (TMath::Abs(lRapCurrentPart) > fYMax) continue;
4454
b6a9eae2 4455 Float_t dx = mcXv-p0->Xv(), dy = mcYv-p0->Yv(), dz = mcZv-p0->Zv();
4456 Float_t l = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
667b678a 4457
4458 //Cut in the 3D-distance of the secondary vertex to primary vertex
4459 if (l > 0.01) continue; // secondary V0
4460
4461 //Transverse distance to vertex
4462 dx = mcXv-pDaughter0->Xv(); dy = mcYv-pDaughter0->Yv();
d39f4158 4463 //Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
667b678a 4464
80c0bcd3 4465 // Pt Selection
4466 if((p0->Pt())<10.) {
4467
4468 // K0s
4469 if (lPdgcodeCurrentPart == kK0Short) {
59e0735e 4470
80c0bcd3 4471 fK0sMCPt->Fill(lPtCurrentPart);
4472 fK0sMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4473
4474 if(isNaturalPart){
4475 fK0sMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4476 fK0sMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
ca96d60a 4477
099a1ea9 4478 if(TMath::Abs(lRapCurrentPart)<fYMax) fK0sMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
ca96d60a 4479
80c0bcd3 4480 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
4481 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 3) );
4482 }
4483 else{
4484 fK0sMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
099a1ea9 4485 if(TMath::Abs(lRapCurrentPart)<fYMax) fK0sMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
80c0bcd3 4486 }
667b678a 4487
80c0bcd3 4488 } // End K0s selection
4489 // Lambda
4490 if (lPdgcodeCurrentPart == kLambda0) {
31f87a49 4491
80c0bcd3 4492 fLambdaMCPt->Fill(lPtCurrentPart);
4493 fLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
ca96d60a 4494
80c0bcd3 4495 if(isNaturalPart){
4496 fLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4497 fLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
53e7de27 4498
099a1ea9 4499 if(TMath::Abs(lRapCurrentPart)<fYMax) fLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
59e0735e 4500
80c0bcd3 4501 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
4502 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 4) );
4503 }
4504 else{
4505 fLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
099a1ea9 4506 fLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
80c0bcd3 4507 }
667b678a 4508
80c0bcd3 4509 if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 )
4510 fLambdaMCFromXi->Fill(lPtCurrentPart,centrality);
ca96d60a 4511
80c0bcd3 4512 } // End Lambda
4513 // AntiLambda
4514 if (lPdgcodeCurrentPart == kLambda0Bar) {
667b678a 4515
80c0bcd3 4516 fAntiLambdaMCPt->Fill(lPtCurrentPart);
4517 fAntiLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
667b678a 4518
80c0bcd3 4519 if(isNaturalPart){
4520 fAntiLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4521 fAntiLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
ca96d60a 4522
099a1ea9 4523 if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
53e7de27 4524
80c0bcd3 4525 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
4526 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 5) );
4527 }
4528 else{
4529 fAntiLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
099a1ea9 4530 if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
80c0bcd3 4531 }
ca96d60a 4532
80c0bcd3 4533 if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 )
4534 fAntiLambdaMCFromXi->Fill(lPtCurrentPart,centrality);
ca96d60a 4535
80c0bcd3 4536 } // End AntiLambda
4537
4538 } // End pt selection
4539 // Xi-
1ade0359 4540 /*
cb30d9ae 4541 if(lPdgcodeCurrentPart == kXiMinus || lPdgcodeCurrentPart == 3322){
80c0bcd3 4542
4543 if( isNaturalPart )
cb30d9ae 4544 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 6) );
80c0bcd3 4545
cb30d9ae 4546 } //End Xi
4547 */
1ade0359 4548
667b678a 4549 } // End loop over MC
4550
b6f9da99 4551 // -----------------------------------------
4552 // ---------- MC Correlations --------------
4553 // -----------------------------------------
4554
4555 Float_t triggerMCPt = -1000.;
4556 Float_t triggerMCPhi = -1000.;
4557 Float_t triggerMCEta = -1000.;
4558
4559 Float_t dPhiMC = -100.;
4560 Float_t dEtaMC = -100.;
4561
4562 for(Int_t ii=0; ii<(fTriggerPartMC->GetEntriesFast()); ii++){
b6f9da99 4563 AliMiniParticle* trigMC = (AliMiniParticle*) fTriggerPartMC->At(ii);
4564
4565 triggerMCPt = trigMC->Pt();
4566 triggerMCPhi = trigMC->Phi();
4567 triggerMCEta = trigMC->Eta();
4568
4569 fTriggerMCPtCent->Fill(triggerMCPt,centrality);
4570
4571 for(Int_t jj=0; jj<(fAssocPartMC->GetEntriesFast()); jj++){
4572
1e9b7523 4573 AliMiniParticle* assocMC = (AliMiniParticle*) fAssocPartMC->At(jj);
b6f9da99 4574 if(assocMC->Pt()>triggerMCPt) continue;
4575
4576 dPhiMC = dPHI(triggerMCPhi,assocMC->Phi());
4577 dEtaMC = triggerMCEta - assocMC->Eta();
4578
80c0bcd3 4579 // K0s, Lambdas and AntiLambdas (h-V0 correlations)
4580 if( (triggerMCPt<fTrigPtMax) && ( (assocMC->WhichCandidate()==3) || (assocMC->WhichCandidate()==4) || (assocMC->WhichCandidate()==5) ) )
4581 for(Int_t k=0;k<kN1;k++) // Pt bin
4582 if( (assocMC->Pt()>=kPtBinV0[k]) && (assocMC->Pt()<kPtBinV0[k+1]) ){
4583 if(assocMC->WhichCandidate()==3)
4584 fK0sdPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
4585 if(assocMC->WhichCandidate()==4)
4586 fLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
4587 if(assocMC->WhichCandidate()==5)
4588 fAntiLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
4589 } // End pt bin
4590
b6f9da99 4591 } // End loop over trigger particles
4592
4593 } // End loop over trigger particles
4594
667b678a 4595 } // End MC condition
e5930cc2 4596
667b678a 4597 // *************************************************
4598 // V0 loop - AOD
348080d3 4599 fAssocParticles = new TObjArray();
4600 fAssocParticles->SetOwner(kTRUE);
4601 if(NtrigPerEvnt>0)
4602 V0Loop(kReconstruction,kTRUE,-1,-1);
4603 else
9cb4cfe3 4604 V0Loop(kReconstruction,kFALSE,-1,-1);
e5930cc2 4605
348080d3 4606 //-------------------------------------------------------------
4607 // Correlations
4608 //-------------------------------------------------------------
81c9e762 4609
4610 // variables for correlations:
348080d3 4611 Float_t ptTrig=0., pxTrig=0., pyTrig=0.;
4612 Float_t massK0s=0., mK0s=0., sK0s=0.;
4613 Float_t massL=0., mL=0., sL=0.;
4614 Float_t massAL=0.; //, mAL=0., sAL=0.;
4615 Float_t pt=-100., pxAssoc=-1000., pyAssoc=-1000.;
4616 Float_t lPhi=0., lEta=0.;
4617 Float_t lAlphaV0=0., lPtArmV0=0, dcaPos=0., dcaNeg=0.;
099a1ea9 4618 Float_t dx=-100., dy=-100., lt=-100., res=-100.;
348080d3 4619 Float_t dlK=-100., dlL=-100.;
4620 Float_t dPhi=-100., dEta=-100., radio=-100.;
ce2d235a 4621 Double_t xDCA[2], cov[3];
4622 Bool_t proptodca;
81c9e762 4623
4624 // variables for track splititing checks:
4625 Float_t posdPhiS = -9999., posdEtaS = -9999., negdPhiS = -9999., negdEtaS = -9999.;
4626 Float_t fracTrigTPCSharedMap=-1., fracPosDaugTPCSharedMap =-1., fracNegDaugTPCSharedMap =-1.;
478818ef 4627 //Bool_t trigTPCMapOk=kTRUE, posDaugTPCMapOk=kTRUE, negDaugTPCMapOk=kTRUE;
0e7d3472 4628 Float_t RdPhiStarMaxPosDaug=-1., RdPhiStarMaxNegDaug=-1., den=1.;
773f3106 4629 Double_t trigCov[21], posDaugCov[21], negDaugCov[21];
4630 Double_t trigPos[6], posDaugPos[6], negDaugPos[6];
4631 Double_t trigXYZ[3], posDaugXYZ[3], negDaugXYZ[3];
ce2d235a 4632 Double_t devPosDaugTrig[9], devNegDaugTrig[9], splitCont[9], splitCont2[14];
9fa8d4ee 4633 Int_t sameSignPosDaug = -1, sameSignNegDaug = -1;
81c9e762 4634 Float_t sameLabelPosDaug = 0., sameLabelNegDaug = 0.;
e5930cc2 4635 Int_t tlab, nlab, plab;
4636 Double_t resdEtsSdPhiS[6];
773f3106 4637
ce2d235a 4638 // --------------------------------
4639 // weight to be used for the correlations due to the steps presenteed in the centrality distribution only for 2011 Pb-Pb data;
4640 Double_t weight = 1.;
4641 if( fCollision.Contains("PbPb2011") ){
4642 if( centrality >= 9.0 && centrality < 10.0 ) weight = 1.0675;
4643 else if( centrality >= 10.0 && centrality < 11.0 ) weight = 0.39188;
4644 else if( centrality >= 11.0 && centrality < 12.0 ) weight = 0.68262;
4645 else weight = 1.;
4646 }
4647
3002fb0e 4648 // --------------------------------
4649 // h-V0 correlations
348080d3 4650 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
4651 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
4652 if( trig->WhichCandidate() == 0 ) continue;
4653
81c9e762 4654 const AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
348080d3 4655 ptTrig = tTrig->Pt(); pxTrig = tTrig->Px(); pyTrig = tTrig->Py();
ce2d235a 4656
4657 proptodca = ((AliAODTrack*)fAOD->GetTrack(trig->ID()))->PropagateToDCA(vtx,bSign,100.0,xDCA,cov);
4658 xDCA[0] = TMath::Abs(xDCA[0]); xDCA[1] = TMath::Abs(xDCA[1]);
4659
4660 fTriggerDCA->Fill(xDCA[0],1.);
4661 fTriggerDCA->Fill(xDCA[1],2.);
4662 //Printf(" %lf %lf",xDCA[0],xDCA[1]);
348080d3 4663
78c6fbbe 4664 // ---------------- Fraction of TPC Shared Cluster:
cc4e3d81 4665 fracTrigTPCSharedMap = GetFractionTPCSharedCls(tTrig);
0aa4191c 4666 fTrigFracShTPCcls->Fill(ptTrig,fracTrigTPCSharedMap);
4667
348080d3 4668 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
4669 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
4670 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
4671 const AliAODTrack *ntrack=(AliAODTrack *)tAssoc->GetDaughter(1);
4672 const AliAODTrack *ptrack=(AliAODTrack *)tAssoc->GetDaughter(0);
4673
4674 if( SameTrack(tTrig,ntrack) || SameTrack(tTrig,ptrack) )
4675 continue;
667b678a 4676
b6f9da99 4677 if( ptTrig < trackAssocME->Pt() ) continue;
4678
348080d3 4679 lPhi = trackAssocME->Phi();
4680 lEta = trackAssocME->Eta();
4681
4682 // Correlation in deltaPhi & deltaEta
4683 dPhi = dPHI(trig->Phi(),lPhi);
4684 dEta = trig->Eta() - lEta;
4685 radio = TMath::Sqrt(dPhi*dPhi + dEta*dEta);
4686
4687 // Armenteros variables:
4688 lAlphaV0 = tAssoc->AlphaV0();
4689 lPtArmV0 = tAssoc->PtArmV0();
4690
4691 // 2D momentum
4692 pt = trackAssocME->Pt(); pxAssoc = tAssoc->Px(); pyAssoc = tAssoc->Py();
4693 // Decay vertex
4694 Double_t xyz[3]; tAssoc->GetSecondaryVtx(xyz);
099a1ea9 4695 dx=xyz[0]-xv; dy=xyz[1]-yv; //dz=xyz[2]-zv;
348080d3 4696 // Decay length: 2D
4697 lt=TMath::Sqrt(dx*dx + dy*dy);
4698 // Spatial resolution trigger-V0 point decay
4699 res = SpatialResolution(pxTrig,pyTrig,pxAssoc,pyAssoc,lt);
4700 // Ctau
4701 dlK = 0.4977*lt/pt;
4702 dlL = 1.1157*lt/pt;
4703
4704 Int_t binPtv0 = PtBin( pt );
4705 if(binPtv0==-1) continue;
4706
b6f9da99 4707 Int_t lMCAssocNegDaug = trackAssocME->NegDaugMCLabel();
4708 Int_t lMCAssocPosDaug = trackAssocME->PosDaugMCLabel();
348080d3 4709
b43090ab 4710 // ----------------------------------------------------------------------------
4711
81c9e762 4712 // -----------------------------------------------------------------
4713 // ****************** Track splitting check ******************
4714 // -----------------------------------------------------------------
773f3106 4715
81c9e762 4716 sameLabelPosDaug = 0.; sameLabelNegDaug = 0.;
9fa8d4ee 4717 sameSignPosDaug = -1; sameSignNegDaug = -1;
0e7d3472 4718 RdPhiStarMaxPosDaug=-1.; RdPhiStarMaxNegDaug=-1.;
478818ef 4719 //trigTPCMapOk=kTRUE; posDaugTPCMapOk=kTRUE; negDaugTPCMapOk=kTRUE;
32d452c9 4720 fracPosDaugTPCSharedMap=0; fracNegDaugTPCSharedMap=0;
773f3106 4721
b43090ab 4722 // ---------------- Fraction of TPC Shared Cluster
b43090ab 4723 fracPosDaugTPCSharedMap = GetFractionTPCSharedCls(ptrack);
4724 fracNegDaugTPCSharedMap = GetFractionTPCSharedCls(ntrack);
e5930cc2 4725
81c9e762 4726 // =========== Classical methods for track-splitting ============= //
4727 if( TMath::Abs(dPhi)<0.1 && TMath::Abs(dEta)<0.1 ){
4728
0e7d3472 4729 // --------- Check sign of the trigger and daughter track:
4730 if(tTrig->Charge()==1) { sameSignPosDaug = 1; sameSignNegDaug = 0; }
4731 else { sameSignPosDaug = 0; sameSignNegDaug = 1; }
4732
81c9e762 4733 // -------- Shifting charged tracks to the primary vertex.
4734 // -------- See HBT anlayses:
0e7d3472 4735
81c9e762 4736 // Trigger particle:
4737 SetSftPosR125(tTrig,bSign,priVtx,"Trigger");
773f3106 4738
81c9e762 4739 // Positive daughter: calculating delta(phi)* and delta(eta)*
4740 SetSftPosR125(ptrack,bSign,priVtx,"Daughter");
cb30d9ae 4741 posdPhiS = dPhiSAtR125();
81c9e762 4742 posdEtaS = dEtaS();
773f3106 4743
81c9e762 4744 // Negative daughter: calculating delta(phi)* and delta(eta)*
4745 SetSftPosR125(ntrack,bSign,priVtx,"Daughter");
cb30d9ae 4746 negdPhiS = dPhiSAtR125();
81c9e762 4747 negdEtaS = dEtaS();
81c9e762 4748
e5930cc2 4749 // ------ Get position:
4750 tTrig->GetXYZ(trigXYZ);
4751 ptrack->GetXYZ(posDaugXYZ);
4752 ntrack->GetXYZ(negDaugXYZ);
4753
4754 // ------ Covaraince matrix for the tracks:
4755 tTrig->GetCovarianceXYZPxPyPz(trigCov);
4756 ptrack->GetCovarianceXYZPxPyPz(posDaugCov);
4757 ntrack->GetCovarianceXYZPxPyPz(negDaugCov);
4758
4759 // ------- position and momentum:
4760 // trigger particle
4761 trigPos[0] = trigXYZ[0]; trigPos[1] = trigXYZ[1]; trigPos[2] = trigXYZ[2];
4762 trigPos[3] = tTrig->Px(); trigPos[4] = tTrig->Py(); trigPos[5] = tTrig->Pz();
4763
4764 // positive daughter
4765 posDaugPos[0] = posDaugXYZ[0]; posDaugPos[1] = posDaugXYZ[1]; posDaugPos[2] = posDaugXYZ[2];
4766 posDaugPos[3] = ptrack->Px(); posDaugPos[4] = ptrack->Py(); posDaugPos[5] = ptrack->Pz();
4767
4768 // negative daughter
4769 negDaugPos[0] = negDaugXYZ[0]; negDaugPos[1] = negDaugXYZ[1]; negDaugPos[2] = negDaugXYZ[2];
4770 negDaugPos[3] = ntrack->Px(); negDaugPos[4] = ntrack->Py(); negDaugPos[5] = ntrack->Pz();
4771
4772 // ------- deviation between the two tracks:
4773 // positive daughter
4774 for(Int_t ll=0;ll<6;ll++){
4775 den = trigCov[ll*(ll+1)/2+ll] + posDaugCov[ll*(ll+1)/2+ll] ;
4776 devPosDaugTrig[ll] = 0.;
4777
4778 if(den>0) devPosDaugTrig[ll] = TMath::Power( trigPos[ll] - posDaugPos[ll] ,2) / den;
4779
4780 if(ll<3) devPosDaugTrig[6] += devPosDaugTrig[ll]; // sum in X,Y,Z
4781 if(ll>2) devPosDaugTrig[7] += devPosDaugTrig[ll]; // sum in momemtum
4782 devPosDaugTrig[8] += devPosDaugTrig[ll]; // sum in all variables
4783 }
4784
4785 // negative daughter
4786 for(Int_t ll=0;ll<6;ll++){
4787 den = trigCov[ll*(ll+1)/2+ll] + negDaugCov[ll*(ll+1)/2+ll] ;
4788 devNegDaugTrig[ll] = 0;
4789
4790 if(den>0) devNegDaugTrig[ll] = TMath::Power( trigPos[ll] - negDaugPos[ll] ,2) / den;
4791
4792 if(ll<3) devNegDaugTrig[6] += devNegDaugTrig[ll]; // sum in X,Y,Z
4793 if(ll>2) devNegDaugTrig[7] += devNegDaugTrig[ll]; // sum in momemtum
4794 devNegDaugTrig[8] += devNegDaugTrig[ll]; // sum in all variables
b43090ab 4795
e5930cc2 4796 }
4797
4798
81c9e762 4799 // ---------------- Monte Carlo check for track-splitting
e5930cc2 4800 if(fIsMC){
4801
4802 TList *lst = fAOD->GetList();
4803 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
4804 if (!stack) {
4805 Printf("ERROR: stack not available");
4806 return;
4807 }
4808
81c9e762 4809 sameLabelPosDaug = 1.*SameLabel(tTrig,ptrack);
4810 sameLabelNegDaug = 1.*SameLabel(tTrig,ntrack);
4811
e5930cc2 4812 // Resolution of delta(phi)* and delta(eta)*
4813 tlab = TMath::Abs(tTrig->GetLabel());
4814 plab = TMath::Abs(ptrack->GetLabel());
4815 nlab = TMath::Abs(ntrack->GetLabel());
4816
4817 AliAODMCParticle *tPart=(AliAODMCParticle*)stack->UncheckedAt(tlab);
4818 AliAODMCParticle *pPart=(AliAODMCParticle*)stack->UncheckedAt(plab);
4819 AliAODMCParticle *nPart=(AliAODMCParticle*)stack->UncheckedAt(nlab);
4820
4821 resdEtsSdPhiS[0] = pt;
4822
4823 //positive daughter
4824 resdEtsSdPhiS[2] = ptrack->Pt();
4825 resdEtsSdPhiS[3] = (tPart->Phi() - pPart->Phi()) - posdPhiS;
4826 resdEtsSdPhiS[4] = (tPart->Eta() - pPart->Eta()) - posdEtaS;
4827 resdEtsSdPhiS[5] = sameSignPosDaug;
4828
4829 if( trackAssocME->WhichCandidate() == 3 ){
4830 resdEtsSdPhiS[1] = massK0s;
4831 fK0sPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4832 }
4833 if( trackAssocME->WhichCandidate() == 4 ){
4834 resdEtsSdPhiS[1] = massL;
4835 fLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4836 }
4837 if( trackAssocME->WhichCandidate() == 5 ){
4838 resdEtsSdPhiS[1] = massAL;
4839 fAntiLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4840 }
4841
4842 // negative daughter
4843 resdEtsSdPhiS[2] = ntrack->Pt();
4844 resdEtsSdPhiS[3] = (tPart->Phi() - nPart->Phi()) - negdPhiS;
4845 resdEtsSdPhiS[4] = (tPart->Eta() - nPart->Eta()) - negdEtaS;
4846 resdEtsSdPhiS[5] = sameSignNegDaug;
4847
4848 if( trackAssocME->WhichCandidate() == 3 ){
4849 resdEtsSdPhiS[1] = massK0s;
4850 fK0sNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4851 }
4852 if( trackAssocME->WhichCandidate() == 4 ){
4853 resdEtsSdPhiS[1] = massL;
4854 fLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4855 }
4856 if( trackAssocME->WhichCandidate() == 5 ){
4857 resdEtsSdPhiS[1] = massAL;
4858 fAntiLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4859 }
4860
81c9e762 4861 }
773f3106 4862
81c9e762 4863 // ================ Alternative methods for track-splitting ==================
4864 if(TMath::Abs(dPhi)<0.02 && TMath::Abs(dEta)<0.02){
4865
4866 // --------- Calculate TPCRadius*Delta(phi)Star_Max distance:
4867 RdPhiStarMaxPosDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ptrack->Phi(), ptrack->Eta(), ptrack->Pt(), 1, bSign);
4868 RdPhiStarMaxNegDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ntrack->Phi(), ntrack->Eta(), ntrack->Pt(), -1, bSign);
4869
e5930cc2 4870 // -------- Comparison between trigger and daughter tracks:
4871 // -------- Filling deviation of matrix elements
4872 splitCont[0] = pt; splitCont[5] = fracTrigTPCSharedMap;
81c9e762 4873
e5930cc2 4874 // ---------------------------
4875 // -------- Positive daughter:
4876 splitCont[2] = ptrack->Pt(); splitCont[3] = sameSignPosDaug;
4877 splitCont[4] = RdPhiStarMaxPosDaug; splitCont[6] = fracPosDaugTPCSharedMap;
4878
4879 // ----K0s
4880 if( trackAssocME->WhichCandidate() == 3 ){
4881 splitCont[1] = massK0s;
4882 for(Int_t ll=0; ll<=8; ll++){
4883 splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
4884 fK0sPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4885 }
81c9e762 4886
e5930cc2 4887 }
4888 // ----Lambda
4889 if( trackAssocME->WhichCandidate() == 4 ){
4890 splitCont[1] = massL;
4891 for(Int_t ll=0; ll<=8; ll++){
4892 splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
4893 fLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4894 }
81c9e762 4895
e5930cc2 4896 }
4897 // ----AntiLambda
4898 if( trackAssocME->WhichCandidate() == 5 ){
4899 splitCont[1] = massAL;
4900 for(Int_t ll=0; ll<=8; ll++){
4901 splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
4902 fAntiLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4903 }
4904
4905 }
4906 // End: Positive daughter
773f3106 4907
e5930cc2 4908 // ---------------------------
4909 // -------- Negative daughter:
4910 splitCont[2] = ntrack->Pt(); splitCont[3] = sameSignNegDaug;
4911 splitCont[4] = RdPhiStarMaxNegDaug; splitCont[6] = fracNegDaugTPCSharedMap;
773f3106 4912
e5930cc2 4913 // ----K0s
4914 if( trackAssocME->WhichCandidate() == 3 ){
4915 splitCont[1] = massK0s;
4916 for(Int_t ll=0; ll<=8; ll++){
4917 splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
4918 fK0sNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4919 }
4920
4921 }
4922 // ----Lambda
4923 if( trackAssocME->WhichCandidate() == 4 ){
4924 splitCont[1] = massL;
4925 for(Int_t ll=0; ll<=8; ll++){
4926 splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
4927 fLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4928 }
4929
81c9e762 4930 }
e5930cc2 4931 // ----AntiLambda
4932 if( trackAssocME->WhichCandidate() == 5 ){
4933 splitCont[1] = massAL;
4934 for(Int_t ll=0; ll<=8; ll++){
4935 splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
4936 fAntiLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4937 }
773f3106 4938
81c9e762 4939 }
e5930cc2 4940 // End: Negative daughter
4941
81c9e762 4942 } // end selection in |delta(eta)| < 0.02, |delta(phi)| < 0.02
e5930cc2 4943
4944
4945 // ================ FILLING THnSparse: Classical track-splitting method: d(phi)* and d(eta)*
ce2d235a 4946 splitCont2[0] = pt; splitCont2[6] = fracTrigTPCSharedMap;
4947 splitCont2[11] = xDCA[0]; splitCont2[12] = xDCA[1];
e5930cc2 4948 // --------------------------
4949 // -------- Positive daughter:
4950 splitCont2[2] = ptrack->Pt(); splitCont2[3] = sameSignPosDaug; splitCont2[4] = posdPhiS; splitCont2[5] = posdEtaS;
4951 splitCont2[7] = fracPosDaugTPCSharedMap; splitCont2[8] = fracTrigTPCSharedMap - fracPosDaugTPCSharedMap;
ce2d235a 4952 splitCont2[9] = devPosDaugTrig[7]; splitCont2[10] = tAssoc->DcaPosToPrimVertex(); splitCont2[13] = sameLabelPosDaug;
e5930cc2 4953
4954 // ---- K0s
4955 if( trackAssocME->WhichCandidate() == 3 ){
4956 splitCont2[1] = massK0s;
4957 // Positive daughter
4958 fK0sPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4959 }
4960 // ---- Lambda
4961 if( trackAssocME->WhichCandidate() == 4 ){
4962 splitCont2[1] = massL;
4963 // Positive daughter
4964 fLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4965 }
4966 // ---- AntiLambda
4967 if( trackAssocME->WhichCandidate() == 5 ){
4968 splitCont2[1] = massAL;
4969 // Positive daughter
4970 fAntiLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4971 }
4972
4973 // --------------------------
4974 // ------- Negative daughter:
4975 splitCont2[2] = ntrack->Pt(); splitCont2[3] = sameSignNegDaug; splitCont2[4] = negdPhiS; splitCont2[5] = negdEtaS;
4976 splitCont2[7] = fracNegDaugTPCSharedMap; splitCont2[8] = fracTrigTPCSharedMap - fracNegDaugTPCSharedMap;
ce2d235a 4977 splitCont2[9] = devNegDaugTrig[7]; splitCont2[10] = tAssoc->DcaNegToPrimVertex(); splitCont2[13] = sameLabelNegDaug;
e5930cc2 4978
4979 // ---- K0s
4980 if( trackAssocME->WhichCandidate() == 3 ){
4981 splitCont2[1] = massK0s;
4982 // Negative daughter
4983 fK0sNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4984 }
4985 // ---- Lambda
4986 if( trackAssocME->WhichCandidate() == 4 ){
4987 splitCont2[1] = massL;
ce2d235a 4988 // Negative daughter
0aa4191c 4989 fLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
e5930cc2 4990 }
4991 // ---- AntiLambda
4992 if( trackAssocME->WhichCandidate() == 5 ){
4993 splitCont2[1] = massAL;
4994 // Negative daughter
4995 fAntiLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4996 }
773f3106 4997
81c9e762 4998 } // end selection in |delta(eta)| < 0.1, |delta(phi)| < 0.1
cb30d9ae 4999
e5930cc2 5000 // ----------------------------------------------------------------
cb30d9ae 5001 // Reject the 'fake' correlation due to the TPC shared clusters
5002 // between trigger particle and one of the daughter tracks
5003 // The rejection will affect more the correlations:
5004 // - Trigger track - Positive track (from Lambda with pt above 3 GeV/c)
5005 // - Trigger track - Negative track (from AntiLambda with pt above 3 GeV/c)
e5930cc2 5006 /* if( fracTrigTPCSharedMap>0.5 &&
9fa8d4ee 5007 ( ( sameSignPosDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracPosDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ||
e5930cc2 5008 ( sameSignNegDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracNegDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ) )*/
cb30d9ae 5009
bfab9a17 5010 if( (fracTrigTPCSharedMap > fFracTPCcls) || (fracPosDaugTPCSharedMap > fFracTPCcls) || (fracNegDaugTPCSharedMap > fFracTPCcls) )
e5930cc2 5011 continue;
cb30d9ae 5012
773f3106 5013 // ----------------------------------------------------------------------------
5014
348080d3 5015 // *******************
5016 // K0s selection
5017 // *******************
5018 if( trackAssocME->WhichCandidate() == 3 ){
773f3106 5019
348080d3 5020 massK0s = tAssoc->MassK0Short();
5021 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
44972668 5022 if( fCollision.Contains("PbPb2010") )
5023 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
5024 else if( fCollision.Contains("PbPb2011") )
5025 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
348080d3 5026
44972668 5027 // ==== Correlations K0s invariant mass peak ==== //
5028 // +++++++++++ Pt bin & centrality
ce2d235a 5029 fK0sdPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massK0s,weight);
44972668 5030
0aa4191c 5031 fK0sPosDaugFracShTPCclsTrig->Fill(massK0s,pt,fracPosDaugTPCSharedMap);
5032 fK0sNegDaugFracShTPCclsTrig->Fill(massK0s,pt,fracNegDaugTPCSharedMap);
5033
478818ef 5034 // ==== Correlations K0s invariant mass peak ==== //
5035 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
773f3106 5036
478818ef 5037 if(radio<0.02){
b6f9da99 5038 fK0sSpatialRes->Fill(dPhi,res,lt);
773f3106 5039 }
b6f9da99 5040 if(radio < 0.4){
773f3106 5041 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
b6f9da99 5042 fK0sDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
5043 RecCascade(tTrig,ntrack,ptrack,"K0s");
5044 RecCascade(tTrig,ptrack,ntrack,"K0s");
5045 }
e5930cc2 5046
348080d3 5047 }
5048 // ==== Correlations K0s background ==== //
5049 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
5050 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
5051
b6f9da99 5052 // Only fills the histograms when it is a triggered event
5053 if(j==0){
5054 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,1);
5055 // MC Association of daughter particles
5056 fK0sBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
5057 fK0sBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
5058 }
348080d3 5059
5060 // Pt bin & centrality
44972668 5061 //fK0sdPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
b6f9da99 5062
348080d3 5063 if(radio < 0.4){ // Under the correlation peak
773f3106 5064 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
348080d3 5065 fK0sBckgDecLength->Fill(dlK,ptTrig);
5066 fK0sBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
5067 fK0sBckgEtaPhi->Fill(lPhi,lEta);
5068 fK0sBckgPhiRadio->Fill(lPhi,lt);
5069
348080d3 5070 //RecCascade(trkTrig,ntrack,ptrack,"K0s");
5071 //RecCascade(trkTrig,ptrack,ntrack,"K0s");
5072
5073 }// End selection in the correlation peak
5074
5075 } // End background selection
5076
5077 } // End K0s selection
5078
5079 // *******************
5080 // Lambda selection
5081 // *******************
5082 if( trackAssocME->WhichCandidate() == 4 ){
5083 massL = tAssoc->MassLambda();
5084 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
44972668 5085 if( fCollision.Contains("PbPb2010") )
5086 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
5087 else if( fCollision.Contains("PbPb2011") )
5088 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
5089
5090 // ==== Correlations Lambda invariant mass peak ==== //
5091 // +++++++++++ Pt bin & centrality
ce2d235a 5092 fLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massL,weight);
0aa4191c 5093
5094 fLambdaPosDaugFracShTPCclsTrig->Fill(massL,pt,fracPosDaugTPCSharedMap);
5095 fLambdaNegDaugFracShTPCclsTrig->Fill(massL,pt,fracNegDaugTPCSharedMap);
44972668 5096
478818ef 5097 // ==== Correlations Lambda invariant mass peak ==== //
5098 if (TMath::Abs(mL-massL) < 3*sL) {
5099
5100 if(radio<0.02)
b6f9da99 5101 fLambdaSpatialRes->Fill(dPhi,res,lt);
5102 if(radio < 0.4){
773f3106 5103 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
b6f9da99 5104 fLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
5105 RecCascade(tTrig,ntrack,ptrack,"Lambda");
5106 RecCascade(tTrig,ptrack,ntrack,"Lambda");
5107 }
348080d3 5108
5109 } // End mass peak selection
5110 // ==== Correlations Lambda background ==== //
5111 if( TMath::Abs(mL-massL + 6.5*sL) < 1.5*sL ||
5112 TMath::Abs(mL-massL - 6.5*sL) < 1.5*sL ) {
0e7d3472 5113
b6f9da99 5114 // Only fills the histograms when it is a triggered event
5115 if(j==0){
348080d3 5116 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,3);
b6f9da99 5117 // MC Association of daughter particles
5118 fLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
5119 fLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
5120 }
5121
5122 // Pt bin & centrality
44972668 5123 //fLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
348080d3 5124
b6f9da99 5125 if(radio < 0.4){ // Under the peak
773f3106 5126 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,3);
b6f9da99 5127 fLambdaBckgDecLength->Fill(dlL,ptTrig);
5128 fLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
5129 fLambdaBckgEtaPhi->Fill(lPhi,lEta);
5130 fLambdaBckgPhiRadio->Fill(lPhi,lt);
348080d3 5131
b6f9da99 5132 //RecCascade(trkTrig,ntrack,ptrack,"Lambda");
5133 //RecCascade(trkTrig,ptrack,ntrack,"Lambda");
348080d3 5134
b6f9da99 5135 }// End selection in the correlation peak
348080d3 5136
478818ef 5137 } // End background selection
348080d3 5138
5139 }// End Lambda selection
5140 // *******************
5141 // AntiLambda selection
5142 // *******************
5143 if( trackAssocME->WhichCandidate() == 5 ){
5144 massAL = tAssoc->MassAntiLambda();
5145 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
44972668 5146 if( fCollision.Contains("PbPb2010") )
5147 sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
5148 else if( fCollision.Contains("PbPb2011") )
5149 sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
348080d3 5150
44972668 5151 // ==== Correlations Lambda invariant mass peak ==== //
5152 // +++++++++++ Pt bin & centrality
ce2d235a 5153 fAntiLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massAL,weight);
44972668 5154
0aa4191c 5155 fAntiLambdaPosDaugFracShTPCclsTrig->Fill(massAL,pt,fracPosDaugTPCSharedMap);
5156 fAntiLambdaNegDaugFracShTPCclsTrig->Fill(massAL,pt,fracNegDaugTPCSharedMap);
5157
478818ef 5158 // ==== Correlations AntiLambda invariant mass peak ==== //
5159 if (TMath::Abs(mL-massAL) < 3*sL) {
773f3106 5160
348080d3 5161 if(radio<0.1)
5162 fAntiLambdaSpatialRes->Fill(dPhi,res,lt);
5163 if(radio < 0.4){
773f3106 5164 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,4);
348080d3 5165 fAntiLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
5166 RecCascade(tTrig,ntrack,ptrack,"AntiLambda");
5167 RecCascade(tTrig,ptrack,ntrack,"AntiLambda");
5168 }
5169
5170 } // End AntiLambda mass peak
5171 // ==== Correlations AntiLambda background ==== //
5172 if( (TMath::Abs(mL-massAL + 6.5*sL) < 1.5*sL) ||
5173 (TMath::Abs(mL-massAL - 6.5*sL) < 1.5*sL) ){
0e7d3472 5174
5175 // ----------------------------------------------
5176
b6f9da99 5177 // Only fills the histograms when it is a triggered event
5178 if(j==0){
348080d3 5179 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,5);
b6f9da99 5180 // MC Association of daughter particles
5181 fAntiLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
5182 fAntiLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
5183 }
348080d3 5184
b6f9da99 5185 // Pt bin & centrality
44972668 5186 //fAntiLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
348080d3 5187
b6f9da99 5188 if(radio < 0.4){ // Under the peak
773f3106 5189 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,5);
b6f9da99 5190 fAntiLambdaBckgDecLength->Fill(dlL,ptTrig);
5191 fAntiLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
5192 fAntiLambdaBckgEtaPhi->Fill(lPhi,lEta);
5193 fAntiLambdaBckgPhiRadio->Fill(lPhi,lt);
348080d3 5194
b6f9da99 5195 //RecCascade(trkTrig,ntrack,ptrack,"AntiLambda");
5196 //RecCascade(trkTrig,ptrack,ntrack,"AntiLambda");
348080d3 5197
b6f9da99 5198 }// End selection in the correlation peak
348080d3 5199
5200 }// End AntiLambda background
5201
5202 } // End AntiLambda selection
5203
5204 } // End loop over associated particles
1ade0359 5205
bfab9a17 5206
5207 // Filling information of the trigger particle
5208 // after the rejection in the cut of shared TPC cls
5209 fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
5210 fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
5211
348080d3 5212 } // End loop over trigger particles
9cb4cfe3 5213
a04209b7 5214
348080d3 5215 //-------------------------------------------------------------
5216 // Mixing
5217 //-------------------------------------------------------------
72f44032 5218
5219 Double_t phiTrigME=0, etaTrigME=0, phiAssocME=0, etaAssocME=0;
5220 Double_t deltaPhi=0, deltaEta=0;
3002fb0e 5221
72f44032 5222 TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
5223 Int_t nMixed = evMixList->GetSize();
348080d3 5224
72f44032 5225 if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
348080d3 5226
5227 for(Int_t ii=0; ii<nMixed; ii++){
5228
72f44032 5229 AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
5230 phiTrigME = trackTriggerME->Phi();
5231 etaTrigME = trackTriggerME->Eta();
a04209b7 5232
72f44032 5233 // --- V0 associated particles
5234 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
3002fb0e 5235
72f44032 5236 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
5237 if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
5238 if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
5239 if( trackAssocME->WhichCandidate() == 2 ) continue;
348080d3 5240
72f44032 5241 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
a04209b7 5242 const AliAODTrack *ntrack=(AliAODTrack *)tAssoc->GetDaughter(1);
5243 const AliAODTrack *ptrack=(AliAODTrack *)tAssoc->GetDaughter(0);
5244
5245 // Fraction of TPC Shared Cluster
5246 fracPosDaugTPCSharedMap=0; fracNegDaugTPCSharedMap=0;
5247 fracPosDaugTPCSharedMap = GetFractionTPCSharedCls(ptrack);
5248 fracNegDaugTPCSharedMap = GetFractionTPCSharedCls(ntrack);
5249
5250 if( (fracPosDaugTPCSharedMap > fFracTPCcls) || (fracNegDaugTPCSharedMap > fFracTPCcls) )
5251 continue;
5252
72f44032 5253 pt = tAssoc->Pt();
348080d3 5254
0aa4191c 5255 massK0s = tAssoc->MassK0Short();
5256 massL = tAssoc->MassLambda();
5257 massAL = tAssoc->MassAntiLambda();
5258
5259 /*
72f44032 5260 Bool_t IsSelected = kFALSE;
5261 // K0s
5262 if( trackAssocME->WhichCandidate() == 3 ){
5263 massK0s = tAssoc->MassK0Short();
5264 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
5265 if( fCollision.Contains("PbPb2010") )
5266 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
5267 else if( fCollision.Contains("PbPb2011") )
5268 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
44972668 5269
72f44032 5270 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
5271 }
5272 // Lambda
5273 if( trackAssocME->WhichCandidate() == 4 ){
5274 massL = tAssoc->MassLambda();
5275 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
5276 if( fCollision.Contains("PbPb2010") )
5277 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
5278 else if( fCollision.Contains("PbPb2011") )
5279 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
5280
5281 if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
5282 }
5283 // AntiLambda
5284 if( trackAssocME->WhichCandidate() == 5 ){
5285 massAL = tAssoc->MassAntiLambda();
5286 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
5287 if( fCollision.Contains("PbPb2010") )
5288 sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
5289 else if( fCollision.Contains("PbPb2011") )
5290 sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
44972668 5291
72f44032 5292 if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
5293 }
348080d3 5294
0aa4191c 5295 if(!IsSelected) continue;*/
348080d3 5296
72f44032 5297 phiAssocME = trackAssocME->Phi();
5298 etaAssocME = trackAssocME->Eta();
348080d3 5299
72f44032 5300 deltaPhi = dPHI(phiTrigME,phiAssocME);
5301 deltaEta = etaTrigME - etaAssocME;
348080d3 5302
72f44032 5303 Int_t binPtv0 = PtBin( trackAssocME->Pt() );
5304 if(binPtv0==-1) continue;
348080d3 5305
72f44032 5306 if( trackAssocME->WhichCandidate() == 3 ) {
0aa4191c 5307 fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta,massK0s);}
72f44032 5308 else if( trackAssocME->WhichCandidate() == 4 )
0aa4191c 5309 fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta,massL);
72f44032 5310 else if( trackAssocME->WhichCandidate() == 5 )
0aa4191c 5311 fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta,massAL);
348080d3 5312
72f44032 5313 } // End loop over V0's
9cb4cfe3 5314
348080d3 5315 }
5316
72f44032 5317 }
5318
348080d3 5319 //--------------------------------------------------------
5320 //Add the current event to the list of events for mixing
5321 //--------------------------------------------------------
72f44032 5322
348080d3 5323 //Add current event to buffer and Remove redundant events
5324 if(fTriggerParticles->GetEntriesFast()>=0){
5325
72f44032 5326 for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
5327 AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
5328 //cout << trkTrig->Pt() << " " << ii << endl;
348080d3 5329
a04209b7 5330 // Fraction of TPC Shared Cluster
5331 const AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trkTrig->ID());
5332 fracTrigTPCSharedMap = GetFractionTPCSharedCls(tTrig);
5333 if( (fracTrigTPCSharedMap > fFracTPCcls) ) continue;
5334
72f44032 5335 if(evMixList->GetSize() < nMaxEvMix)
5336 evMixList->AddFirst(trkTrig);
a04209b7 5337 /*
72f44032 5338 if(evMixList->GetSize() >= nMaxEvMix) {
5339 AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
5340 evMixList->RemoveLast();
5341 delete tmp;
5342 }
a04209b7 5343 */
348080d3 5344
a04209b7 5345 }// End loop over fTriggerParticles
348080d3 5346
5347 }// End adding trigger particles to buffers
72f44032 5348
9cb4cfe3 5349}
667b678a 5350
5351//___________________________________________________________________________________________
5352
5353void AliAnalysisTaskLambdaOverK0sJets::Terminate(Option_t *)
5354{
5355 // The Terminate() function is the last function to be called during
5356 // a query. It always runs on the client, it can be used to present
5357 // the results graphically or save the results to file.
5358
5359 fOutput=(TList*)GetOutputData(1);
348080d3 5360 fOutputME=(TList*)GetOutputData(2);
5361 fOutputQA=(TList*)GetOutputData(3);
5362
5363 if (fOutput || fOutputME || fOutputQA) {
5364
5365 if(fOutput)
5366 Printf("\n\t *** DONE: fOutput available *** \n");
5367 if(fOutputME)
5368 Printf("\n\t *** DONE: fOutputME available *** \n");
5369 if (fOutputQA)
5370 Printf("\n\t *** DONE: fOutputQA available *** \n");
667b678a 5371 }
348080d3 5372 if (!fOutput || !fOutputME || !fOutputQA) {
5373
5374 if(!fOutput)
5375 Printf("\n\t *** ERROR: fOutput not available *** \n");
5376 if(!fOutputME)
5377 Printf("\n\t *** ERROR: fOutputME available *** \n");
5378 if(!fOutputQA)
5379 Printf("\n\t *** ERROR: fOutputQA not available *** \n");
667b678a 5380 }
348080d3 5381
5382
5383 return;
5384
667b678a 5385}