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