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