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