1 /*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: X. Sanchez Castro *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
23 #include <THnSparse.h>
26 #include <TDatabasePDG.h>
27 #include <TClonesArray.h>
30 #include "AliOADBContainer.h"
32 #include "AliAODMCHeader.h"
33 #include "AliAODMCParticle.h"
34 #include "AliGenHijingEventHeader.h"
36 #include "AliAODEvent.h"
38 #include "AliAODcascade.h"
40 #include "AliCFContainer.h"
41 #include "AliCentrality.h"
44 #include "AliPIDResponse.h"
45 #include "AliAODPid.h"
47 #include "AliInputEventHandler.h"
48 #include "AliAnalysisManager.h"
50 #include "AliExternalTrackParam.h"
52 #include "AliAnalysisTaskLambdaOverK0sJets.h"
54 //extern TROOT *gROOT;
57 ClassImp(AliAnalysisTaskLambdaOverK0sJets)
58 ClassImp(AliMiniParticle)
61 static Int_t nbins = 100; // Number of bins for l, pt, mass for V0
62 static Int_t nbinsPhi = 120; // Number of bins for Phi
63 static Int_t nbinsdPhi = 20; // Number of bins for dPhi
64 static Int_t nbinsdEta = 30; // Number of bins for dEta
65 static Int_t nbinPtLP = 200;
66 static Int_t nbinsVtx = 20;
68 static Float_t pMin = 0.0; // Lower cut for transverse momentum
69 static Float_t pMax = 10.; // Max cut for transverse momentum for V0
70 static Float_t ptMaxLP = 50.; // Max cut for transverse momentum LP
72 static Float_t lMin = 0.0; // Limits in the histo for fidutial volume
73 static Float_t lMax = 100.; // Limits in the fidutial volume
75 //static Int_t nMaxEvMix = 250;
81 AliAnalysisTaskLambdaOverK0sJets::AliAnalysisTaskLambdaOverK0sJets(const char *name) :
82 AliAnalysisTaskSE(name),
84 fAOD(0), fCollision("PbPb2010"), fIsMC(kFALSE), fUsePID(kFALSE), fCentMin(0.), fCentMax(90.), fDoQA(kFALSE), fDoMixEvt(kFALSE), fTrigPtMin(5.), fTrigPtMax(10.), fTrigPtMCMin(5.), fTrigPtMCMax(10000.), fTrigEtaMax(0.8), fCheckIDTrig(kFALSE), fSeparateInjPart(kTRUE), fEndOfHijingEvent(-1), fPIDResponse(0),
86 fMinPtDaughter(0.160), fMaxEtaDaughter(0.8), fMaxDCADaughter(1.0), fUseEtaCut(kFALSE), fYMax(0.7), fDCAToPrimVtx(0.1), fMinCPA(0.998), fNSigma(3.0), fDaugNClsTPC(70.), fMinCtau(0.), fMaxCtau(3.), fIdTrigger(-1), fIsV0LP(0), fPtV0LP(0.), fIsSndCheck(0),
88 fTPCRadius(125.), fDiffTrigDaugFracTPCSharedCls(0.06),
90 fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fEvents(0), fCentrality(0), fCentrality2(0), fCentralityTrig(0), fPrimayVtxGlobalvsSPD(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0),
92 fTriggerEventPlane(0), fTriggerMCPtCent(0), fTriggerMCResPt(0), fTriggerMCResEta(0), fTriggerMCResPhi(0), fTriggerPtCent(0), fTriggerPtCentCh(0), fNTrigPerEvt(0), fTriggerWiSPDHit(0), fTriggerEtaPhi(0), fCheckTriggerFromV0Daug(0), fTriggerComingFromDaug(0), fTriggerIsV0(0), fCheckIDTrigPtK0s(0), fCheckIDTrigPhiK0s(0), fCheckIDTrigEtaK0s(0), fCheckIDTrigNclsK0s(0), fCheckIDTrigPtLambda(0), fCheckIDTrigPhiLambda(0), fCheckIDTrigEtaLambda(0), fCheckIDTrigNclsLambda(0), fCheckIDTrigPtAntiLambda(0), fCheckIDTrigPhiAntiLambda(0), fCheckIDTrigEtaAntiLambda(0), fCheckIDTrigNclsAntiLambda(0),
94 fInjectedParticles(0),
96 fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapEmbeded(0), fK0sAssocPt(0), fK0sAssocPtArm(0), fK0sAssocPtRap(0), fK0sAssocPtRapEmbeded(0), fK0sMCResEta(0), fK0sMCResPhi(0), fK0sMCResPt(0), fK0sPosMCResEta(0), fK0sPosMCResPhi(0), fK0sPosMCResPt(0), fK0sNegMCResEta(0), fK0sNegMCResPhi(0), fK0sNegMCResPt(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0), fLambdaMCPtRapEmbeded(0), fLambdaMCFromXi(0), fLambdaAssocPt(0), fLambdaAssocPtRap(0), fLambdaAssocFromXi(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fLambdaMCResPt(0), fLambdaPosMCResEta(0), fLambdaPosMCResPhi(0), fLambdaPosMCResPt(0), fLambdaNegMCResEta(0), fLambdaNegMCResPhi(0), fLambdaNegMCResPt(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaMCPtRapEmbeded(0), fAntiLambdaMCFromXi(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtRap(0), fAntiLambdaAssocFromXi(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0), fAntiLambdaMCResPt(0), fAntiLambdaPosMCResEta(0), fAntiLambdaPosMCResPhi(0), fAntiLambdaPosMCResPt(0), fAntiLambdaNegMCResEta(0), fAntiLambdaNegMCResPhi(0), fAntiLambdaNegMCResPt(0),
98 fHistArmenterosPodolanski(0), fHistArmPodBckg(0),
100 fK0sMass(0), fK0sMassEmbeded(0), fK0sMassPtEta(0), fK0sMassPtPhi(0), fK0sDaughtersPt(0), fK0sDCADaugToPrimVtx(0), fK0sSpatialRes(0), fK0sBckgDecLength(0), fK0sBckgDCADaugToPrimVtx(0), fK0sBckgEtaPhi(0), fK0sBckgPhiRadio(0), fK0sBckgDCANegDaugToPrimVtx(0), fK0sBckgDCAPosDaugToPrimVtx(0), fV0MassCascade(0),
102 fLambdaMass(0), fLambdaMassEmbeded(0), fLambdaMass2(0), fLambdaMass2Embeded(0), fLambdaMassPtEta(0), fLambdaMassPtPhi(0), fLambdaDaughtersPt(0), fLambdaDCADaugToPrimVtx(0), fLambdaSpatialRes(0), fLambdaBckgDecLength(0), fLambdaBckgDCADaugToPrimVtx(0), fLambdaBckgEtaPhi(0), fLambdaBckgPhiRadio(0), fLambdaBckgDCANegDaugToPrimVtx(0), fLambdaBckgDCAPosDaugToPrimVtx(0),
104 fAntiLambdaMass(0), fAntiLambdaMassEmbeded(0), fAntiLambdaMass2(0), fAntiLambdaMass2Embeded(0), fAntiLambdaMassPtEta(0), fAntiLambdaMassPtPhi(0), fAntiLambdaDaughtersPt(0), fAntiLambdaDCADaugToPrimVtx(0), fAntiLambdaSpatialRes(0), fAntiLambdaBckgDecLength(0), fAntiLambdaBckgDCADaugToPrimVtx(0), fAntiLambdaBckgEtaPhi(0), fAntiLambdaBckgPhiRadio(0), fAntiLambdaBckgDCANegDaugToPrimVtx(0), fAntiLambdaBckgDCAPosDaugToPrimVtx(0),
106 fK0sPtPosDaug(0), fK0sPtNegDaug(0), fK0sBckgPtPosDaug(0), fK0sBckgPtNegDaug(0), fK0sPhiEtaPosDaug(0), fK0sPhiEtaNegDaug(0), fK0sBckgPhiEtaPosDaug(0), fK0sBckgPhiEtaNegDaug(0), fK0sDCAPosDaug(0), fK0sDCANegDaug(0), fK0sBckgDCAPosDaug(0), fK0sBckgDCANegDaug(0), fK0sDecayPos(0), fK0sBckgDecayPos(0), fK0sDecayVertex(0), fK0sBckgDecayVertex(0), fK0sCPA(0), fK0sBckgCPA(0), fK0sDCAV0Daug(0), fK0sBckgDCAV0Daug(0), fK0sNClustersTPC(0), fK0sBckgNClustersTPC(0), fK0sNClustersITSPos(0), fK0sNClustersITSNeg(0), fK0sBckgNClustersITSPos(0), fK0sBckgNClustersITSNeg(0),
108 fLambdaPtPosDaug(0), fLambdaPtNegDaug(0), fLambdaBckgPtPosDaug(0), fLambdaBckgPtNegDaug(0), fLambdaPhiEtaPosDaug(0),fLambdaPhiEtaNegDaug(0), fLambdaBckgPhiEtaPosDaug(0), fLambdaBckgPhiEtaNegDaug(0), fLambdaDCAPosDaug(0),fLambdaDCANegDaug(0), fLambdaBckgDCAPosDaug(0), fLambdaBckgDCANegDaug(0), fLambdaDecayPos(0), fLambdaBckgDecayPos(0), fLambdaDecayVertex(0), fLambdaBckgDecayVertex(0), fLambdaCPA(0), fLambdaBckgCPA(0), fLambdaDCAV0Daug(0), fLambdaBckgDCAV0Daug(0), fLambdaNClustersTPC(0), fLambdaBckgNClustersTPC(0), fLambdaNClustersITSPos(0), fLambdaNClustersITSNeg(0), fLambdaBckgNClustersITSPos(0), fLambdaBckgNClustersITSNeg(0),
110 fAntiLambdaPtPosDaug(0), fAntiLambdaPtNegDaug(0), fAntiLambdaBckgPtPosDaug(0), fAntiLambdaBckgPtNegDaug(0), fAntiLambdaPhiEtaPosDaug(0),fAntiLambdaPhiEtaNegDaug(0), fAntiLambdaBckgPhiEtaPosDaug(0),fAntiLambdaBckgPhiEtaNegDaug(0), fAntiLambdaDCAPosDaug(0),fAntiLambdaDCANegDaug(0), fAntiLambdaBckgDCAPosDaug(0), fAntiLambdaBckgDCANegDaug(0), fAntiLambdaDecayPos(0), fAntiLambdaBckgDecayPos(0), fAntiLambdaDecayVertex(0), fAntiLambdaBckgDecayVertex(0), fAntiLambdaCPA(0), fAntiLambdaBckgCPA(0), fAntiLambdaDCAV0Daug(0), fAntiLambdaBckgDCAV0Daug(0), fAntiLambdaNClustersTPC(0), fAntiLambdaBckgNClustersTPC(0), fAntiLambdaNClustersITSPos(0), fAntiLambdaNClustersITSNeg(0), fAntiLambdaBckgNClustersITSPos(0), fAntiLambdaBckgNClustersITSNeg(0)
115 // variables for track splitting:
116 // shifted positionf for thw tracks
117 for(Int_t i=0; i<3; i++){
118 fTrigSftR125[i] = -9999.;
119 fDaugSftR125[i] = -9999.;
122 // Particles properties in MC
123 for (Int_t i=0; i<kNCent; i++){
126 fK0sMCPtRapVtx[i] = 0;
127 fK0sMCPtRapVtxEmbeded[i] = 0;
128 fK0sMCPtPhiEta[i] = 0;
129 fK0sAssocPtPhiEta[i] = 0;
130 // -- Natural particles
131 fK0sAssocPtMassArm[i] = 0;
132 fK0sAssocMassPtVtx[i] = 0;
133 fK0sAssocMassPtDCADaug[i] = 0;
134 fK0sAssocMassPtCPA[i] = 0;
135 fK0sAssocMassPtDCAPV[i] = 0;
136 fK0sAssocMassPtDaugNClsTPC[i] = 0;
137 // -- Embeded particles
138 fK0sAssocPtMassArmEmbeded[i] = 0;
139 fK0sAssocMassPtVtxEmbeded[i] = 0;
140 fK0sAssocMassPtDCADaug[i] = 0;
141 fK0sAssocMassPtCPAEmbeded[i] = 0;
142 fK0sAssocMassPtDCAPVEmbeded[i] = 0;
143 fK0sAssocMassPtDaugNClsTPCEmbeded[i] = 0;
144 // -- Mass vs rapidity vs pt vs centrlaity
145 fK0sMassPtRap[i] = 0;
146 // -- Splitting checks
147 fK0sPosDaugSplCheckCovMat[i] = 0x0;
148 fK0sNegDaugSplCheckCovMat[i] = 0x0;
149 fK0sPosDaugdPhiSdEtaS[i] = 0x0;
150 fK0sNegDaugdPhiSdEtaS[i] = 0x0;
151 fK0sPosMCResdEtaSdPhiS[i] = 0x0;
152 fK0sNegMCResdEtaSdPhiS[i] = 0x0;
155 fLambdaMCPtRapVtx[i] = 0;
156 fLambdaMCPtRapVtxEmbeded[i] = 0;
157 fLambdaMCPtPhiEta[i] = 0;
158 fLambdaAssocPtPhiEta[i] = 0;
159 // -- Natural particles
160 fLambdaAssocMassPtRap[i] = 0;
161 fLambdaAssocMassPtRap2[i] = 0;
162 fLambdaAssocMassPtVtx[i] = 0;
163 fLambdaAssocMassPtDCADaug[i] = 0;
164 fLambdaAssocMassPtCPA[i] = 0;
165 fLambdaAssocMassPtDCAPV[i] = 0;
166 fLambdaAssocMassPtDaugNClsTPC[i] = 0;
167 // -- Embeded particles
168 fLambdaAssocMassPtRapEmbeded[i] = 0;
169 fLambdaAssocMassPtRapEmbeded2[i] = 0;
170 fLambdaAssocMassPtVtxEmbeded[i] = 0;
171 fLambdaAssocMassPtDCADaug[i] = 0;
172 fLambdaAssocMassPtCPAEmbeded[i] = 0;
173 fLambdaAssocMassPtDCAPVEmbeded[i] = 0;
174 fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
175 // -- Mass vs rapidity vs pt vs centrlaity
176 fLambdaMassPtRap[i] = 0;
177 // -- Splitting checks
178 fLambdaPosDaugSplCheckCovMat[i] = 0x0;
179 fLambdaNegDaugSplCheckCovMat[i] =0x0;
180 fLambdaPosDaugdPhiSdEtaS[i] = 0x0;
181 fLambdaNegDaugdPhiSdEtaS[i] = 0x0;
182 fLambdaPosMCResdEtaSdPhiS[i] = 0x0;
183 fLambdaNegMCResdEtaSdPhiS[i] = 0x0;
186 fAntiLambdaMCPtRapVtx[i] = 0;
187 fAntiLambdaMCPtRapVtxEmbeded[i] = 0;
188 fAntiLambdaMCPtPhiEta[i] = 0;
189 fAntiLambdaAssocPtPhiEta[i] = 0;
190 // -- Natural particles
191 fAntiLambdaAssocMassPtRap[i] = 0;
192 fAntiLambdaAssocMassPtRap2[i] = 0;
193 fAntiLambdaAssocMassPtVtx[i] = 0;
194 fAntiLambdaAssocMassPtDCADaug[i] = 0;
195 fAntiLambdaAssocMassPtCPA[i] = 0;
196 fAntiLambdaAssocMassPtDCAPV[i] = 0;
197 fAntiLambdaAssocMassPtDaugNClsTPC[i] = 0;
198 // -- Embeded particles
199 fAntiLambdaAssocMassPtRapEmbeded[i] = 0;
200 fAntiLambdaAssocMassPtRapEmbeded2[i] = 0;
201 fAntiLambdaAssocMassPtVtxEmbeded[i] = 0;
202 fAntiLambdaAssocMassPtDCADaug[i] = 0;
203 fAntiLambdaAssocMassPtCPAEmbeded[i] = 0;
204 fAntiLambdaAssocMassPtDCAPVEmbeded[i] = 0;
205 fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
206 // -- Mass vs rapidity vs pt vs centrlaity
207 fAntiLambdaMassPtRap[i] = 0;
208 // -- Splitting checks
209 fAntiLambdaPosDaugSplCheckCovMat[i] = 0x0;
210 fAntiLambdaNegDaugSplCheckCovMat[i] = 0x0;
211 fAntiLambdaPosDaugdPhiSdEtaS[i] = 0x0;
212 fAntiLambdaNegDaugdPhiSdEtaS[i] = 0x0;
213 fAntiLambdaPosMCResdEtaSdPhiS[i] = 0x0;
214 fAntiLambdaNegMCResdEtaSdPhiS[i] = 0x0;
218 // Correlations in MC
219 for (Int_t i=0; i<kNCent*kN1; i++){
221 fK0sdPhidEtaMC[i] = 0;
223 fLambdadPhidEtaMC[i] = 0;
225 fAntiLambdadPhidEtaMC[i] = 0;
229 for (Int_t i=0; i<(kNCent*kN1*kNVtxZ); i++){
231 fK0sdPhidEtaPtL[i] = 0;
233 fLambdadPhidEtaPtL[i] = 0;
235 fAntiLambdadPhidEtaPtL[i] = 0;
238 // Mixed events distributions
239 for (Int_t i=0; i<(kN1*kNVtxZ*kNCent); i++){
240 fK0sdPhidEtaME[i] = 0;
241 fLambdadPhidEtaME[i] = 0;
242 fAntiLambdadPhidEtaME[i] = 0;
245 // Constructor. Initialization of pointers
246 DefineOutput(1, TList::Class());
247 DefineOutput(2, TList::Class());
248 DefineOutput(3, TList::Class());
253 //___________________________________________________________________________________________
255 AliAnalysisTaskLambdaOverK0sJets::~AliAnalysisTaskLambdaOverK0sJets()
261 for(Int_t icent=0; icent<kNCent; icent++){
262 for(Int_t iz=0; iz<kNVtxZ; iz++){
263 fMEList[icent*kNVtxZ+iz]->Delete(); delete fMEList[icent*kNVtxZ+iz];
266 delete[] fMEList; fMEList=0x0;
269 if(fTriggerParticles) {
270 delete fTriggerParticles;
271 fTriggerParticles=0x0;
275 delete fTriggerPartMC;
279 if(fAssocParticles) {
280 delete fAssocParticles;
292 //___________________________________________________________________________________________
294 void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
296 // Creating the histograms that are needed for the output
298 fOutput = new TList();
301 fOutputQA = new TList();
302 fOutputQA->SetOwner();
304 fOutputME = new TList();
305 fOutputME->SetOwner();
307 fMEList = new TList*[kNCent*kNVtxZ];
308 for(Int_t icent=0; icent<kNCent; icent++){
309 for(Int_t iz=0; iz<kNVtxZ; iz++){
310 fMEList[icent*kNVtxZ+iz] = new TList();
311 fMEList[icent*kNVtxZ+iz]->SetOwner(kFALSE);
317 // ====== General characteristics of the event and tracks ====== //
319 // Counter for the number of events in each step:
320 fEvents=new TH1F("fEvents","Number of events",14,-0.5,13.5);
321 fEvents->GetXaxis()->SetBinLabel(1,"calls to UserExec()");
322 fEvents->GetXaxis()->SetBinLabel(2,"AOD available");
323 fEvents->GetXaxis()->SetBinLabel(3,"CINT1B");
324 fEvents->GetXaxis()->SetBinLabel(4,"V0M Cent");
325 fEvents->GetXaxis()->SetBinLabel(5,"Global Vtx > 3 part");
326 fEvents->GetXaxis()->SetBinLabel(6,"SPD Vtx > 3 part");
327 fEvents->GetXaxis()->SetBinLabel(7,"|ZVtx Global - Zvtx SPD| < 0.5 cm");
328 fEvents->GetXaxis()->SetBinLabel(8,"|VtxZ| < 10 cm");
329 fEvents->GetXaxis()->SetBinLabel(9,"V0 is LP");
330 fEvents->GetXaxis()->SetBinLabel(10," ");
331 fEvents->GetXaxis()->SetBinLabel(11," ");
332 fEvents->GetXaxis()->SetBinLabel(12,"Triggered");
333 fEvents->GetXaxis()->SetBinLabel(13,"NOT Triggered");
334 fEvents->GetXaxis()->SetBinLabel(14," ");
335 fEvents->GetYaxis()->SetTitle("Counts");
336 fOutput->Add(fEvents);
339 fCentrality = new TH1F("fCentrality","Centrality;Centrality (%);Events",100,0.,100.);
340 fOutput->Add(fCentrality);
342 fCentrality2 = new TH1F("fCentrality2","Centrality in events with |VtxZ|<10 cm;Centrality (%);Events",100,0.,100.);
343 fOutput->Add(fCentrality2);
345 fCentralityTrig = new TH2F("fCentralityTrig","Centrality in events per trigger selection;Centrality (%);Triger Selection",100,0.,100.,3,0.5,3.5);
346 fCentralityTrig->GetYaxis()->SetBinLabel(1,"kCentral");
347 fCentralityTrig->GetYaxis()->SetBinLabel(2,"kSemiCentral");
348 fCentralityTrig->GetYaxis()->SetBinLabel(3,"kMB");
349 fOutput->Add(fCentralityTrig);
352 fPrimayVtxGlobalvsSPD = new TH2F("fPrimayVtxGlobalvsSPD",";Z_{vtx,tr} (cm);Z_{SPD,tr} (cm)",200,-20,20,200,-20,20);
353 fOutput->Add(fPrimayVtxGlobalvsSPD);
355 fPrimaryVertexX = new TH1F("fPrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
356 fOutput->Add(fPrimaryVertexX);
358 fPrimaryVertexY = new TH1F("fPrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
359 fOutput->Add(fPrimaryVertexY);
361 fPrimaryVertexZ = new TH1F("fPrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
362 fOutput->Add(fPrimaryVertexZ);
365 // ====== Trigger Particle characteristics ====== //
367 // Difference between Event plane and the Trigger particles:
368 fTriggerEventPlane = new TH1F("fTriggerEventPlane", ";#varphi_{EP}-#varphi_{Trig};Events",50,0.,TMath::Pi());
369 fOutput->Add(fTriggerEventPlane);
371 // MC: Pt Trigger particle vs centrality:
373 fTriggerMCPtCent = new TH2F("fTriggerMCPtCent","Trigger particle MC;#it{p}_{T} (GeV/#it{c});centrality (%)",2*nbinPtLP,pMin,2*ptMaxLP,100,0.,100.);
374 fOutput->Add(fTriggerMCPtCent);
376 fTriggerMCResPt = new TH3F("fTriggerMCResPt","Trigger particle MC: #it{p}_{T} resolution;(p_{t,MC}-p_{t,Rec})/p_{t,Rec};#it{p}_{T} (GeV/#it{c});centrality",60,-0.3,0.3,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
377 fOutput->Add(fTriggerMCResPt);
379 fTriggerMCResEta = new TH3F("fTriggerMCResEta","Trigger particle MC: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
380 fOutput->Add(fTriggerMCResEta);
382 fTriggerMCResPhi = new TH3F("fTriggerMCResPhi","Trigger particle MC: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
383 fOutput->Add(fTriggerMCResPhi);
386 // Pt Trigger particle vs centrality:
387 fTriggerPtCent = new TH3F("fTriggerPtCent","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
388 fOutput->Add(fTriggerPtCent);
390 fTriggerPtCentCh = new TH3F("fTriggerPtCentCh","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
391 fOutput->Add(fTriggerPtCentCh);
393 fNTrigPerEvt = new TH2F("fNTrigPerEvt","Number of Trigger Particles Per Event;Counts;Centrality",51,-0.5,50.5,100,0.,100);
394 fOutput->Add(fNTrigPerEvt);
396 fTriggerWiSPDHit = new TH1F("fTriggerWiSPDHit","Number of Trigger Particles wi SPD Hits",3,0.,3.);
397 fOutput->Add(fTriggerWiSPDHit);
399 // Phi vs pseudorapidity:
400 fTriggerEtaPhi = new TH2F("fTriggerEtaPhi","Trigger particle;#varphi (rad);#eta",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
401 fOutput->Add(fTriggerEtaPhi);
403 // Check if Trigger particle comes from a V0 daughter:
404 fCheckTriggerFromV0Daug =
405 new TH1F("fCheckTriggerFromV0Daug","Trigger particle from a V0 daughter;;Counts",4,-0.5,3.5);
406 fCheckTriggerFromV0Daug->GetXaxis()->SetTitle("Flag");
407 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(1,"NOT V0 daug");
408 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(2,"V0 daug");
409 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(3,"V0 daug & V0 LP");
410 fOutput->Add(fCheckTriggerFromV0Daug);
412 fTriggerComingFromDaug = new TH1F("fTriggerComingFromDaug","Trigger particle from a V0 daughter;#it{p}_{T} (GeV/#it{c});Counts",240, 0, 12);
413 fOutput->Add(fTriggerComingFromDaug);
415 fTriggerIsV0 = new TH1F("fTriggerIsV0","V0 candidate is a LP;#it{p}_{T} (GeV/#it{c});Counts",nbinPtLP,pMin,ptMaxLP);
416 fOutput->Add(fTriggerIsV0);
418 // ------------------- > Comparing properties of this trigger with the daughters
420 fCheckIDTrigPtK0s = new TH3F("fCheckIDTrigPtK0s","K^{0}_{S};#deltap/p_{tri};;p_{V0}",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
421 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(1,"Pos Daug X");
422 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
423 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
424 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(4,"Neg Daug X");
425 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
426 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
427 fOutput->Add(fCheckIDTrigPtK0s);
429 fCheckIDTrigPhiK0s = new TH3F("fCheckIDTrigPhiK0s","K^{0}_{S};#delta#varphi;;p_{V0}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
430 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
431 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
432 fOutput->Add(fCheckIDTrigPhiK0s);
434 fCheckIDTrigEtaK0s = new TH3F("fCheckIDTrigEtaK0s","K^{0}_{S};#delta#eta;;p_{V0}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
435 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
436 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
437 fOutput->Add(fCheckIDTrigEtaK0s);
439 fCheckIDTrigNclsK0s = new TH3F("fCheckIDTrigNclsK0s","K^{0}_{S};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
440 fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
441 fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
442 fOutput->Add(fCheckIDTrigNclsK0s);
445 fCheckIDTrigPtLambda = new TH3F("fCheckIDTrigPtLambda","#Lambda",40,-0.1,0.1,7,-0.5,6.5,100,1.,11.);
446 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
447 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
448 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
449 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
450 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
451 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
452 fOutput->Add(fCheckIDTrigPtLambda);
454 fCheckIDTrigPhiLambda = new TH3F("fCheckIDTrigPhiLambda","#Lambda",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
455 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
456 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
457 fOutput->Add(fCheckIDTrigPhiLambda);
459 fCheckIDTrigEtaLambda = new TH3F("fCheckIDTrigEtaLambda","#Lambda",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
460 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
461 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
462 fOutput->Add(fCheckIDTrigEtaLambda);
464 fCheckIDTrigNclsLambda = new TH3F("fCheckIDTrigNclsLambda","#Lambda;NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
465 fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
466 fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
467 fOutput->Add(fCheckIDTrigNclsLambda);
470 fCheckIDTrigPtAntiLambda = new TH3F("fCheckIDTrigPtAntiLambda","#bar{#Lambda}",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
471 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
472 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
473 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
474 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
475 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
476 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
477 fOutput->Add(fCheckIDTrigPtAntiLambda);
479 fCheckIDTrigPhiAntiLambda = new TH3F("fCheckIDTrigPhiAntiLambda","#bar{#Lambda}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
480 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
481 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
482 fOutput->Add(fCheckIDTrigPhiAntiLambda);
484 fCheckIDTrigEtaAntiLambda = new TH3F("fCheckIDTrigEtaAntiLambda","#bar{#Lambda}",40,-0.1,0.1,3,-0.5,2.5,100,1.,11.);
485 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
486 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
487 fOutput->Add(fCheckIDTrigEtaAntiLambda);
489 fCheckIDTrigNclsAntiLambda = new TH3F("fCheckIDTrigNclsAntiLambda","#bar{#Lambda};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
490 fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
491 fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
492 fOutput->Add(fCheckIDTrigNclsAntiLambda);
494 // ====== MC-true and MC-Association information ====== //
497 fInjectedParticles = new TH1F("fInjectedParticles","Injected particles;;Counts",2,0.,2.);
498 fInjectedParticles->GetXaxis()->SetBinLabel(1,"Injected");
499 fInjectedParticles->GetXaxis()->SetBinLabel(2,"Natural");
500 fOutput->Add(fInjectedParticles);
503 fK0sMCPt = new TH1F("fK0sMCPt", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
504 fOutput->Add(fK0sMCPt);
506 fK0sMCPtRap = new TH3F("fK0sMCPtRap", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
507 fOutput->Add(fK0sMCPtRap);
509 fK0sMCPtRap2 = new TH3F("fK0sMCPtRap2", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
510 fOutput->Add(fK0sMCPtRap2);
512 for(Int_t jj=0;jj<kNCent;jj++){
513 snprintf(hNameHist,100, "fK0sMCPtRapVtx_Cent_%d",jj);
514 fK0sMCPtRapVtx[jj] = new TH3F(hNameHist, "K^{0}_{S} MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
515 fOutput->Add(fK0sMCPtRapVtx[jj]);
518 fK0sMCPtRapEmbeded = new TH3F("fK0sMCPtRapEmbeded", "K^{0}_{S} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.,1.,100,0.,100.);
519 fOutput->Add(fK0sMCPtRapEmbeded);
521 for(Int_t jj=0;jj<kNCent;jj++){
522 snprintf(hNameHist,100, "fK0sMCPtRapVtxEmbeded_Cent_%d",jj);
523 fK0sMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist, "K^{0}_{S} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
524 fOutput->Add(fK0sMCPtRapVtxEmbeded[jj]);
527 for(Int_t jj=0;jj<kNCent;jj++){
528 snprintf(hNameHist,100, "fK0sMCPtPhiEta_Cent_%d",jj);
529 fK0sMCPtPhiEta[jj] = new TH3F(hNameHist, "K^{0}_{S} MC;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.,1.,nbins,pMin,pMax);
530 fOutput->Add(fK0sMCPtPhiEta[jj]);
533 // K0s MC-Association:
535 new TH1F("fK0sAssocPt","K^{0}_{S} Assoc: L_{T} vs #it{p}_{T};#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
536 fOutput->Add(fK0sAssocPt);
539 new TH3F("fK0sAssocPtArm","K^{0}_{S} Assoc: #it{p}_{T} vs y vs centrality;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
540 fOutput->Add(fK0sAssocPtArm);
542 fK0sAssocPtRap = new TH3F("fK0sAssocPtRap","K^{0}_{S} Assoc;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
543 fOutput->Add(fK0sAssocPtRap);
545 fK0sAssocPtRapEmbeded = new TH3F("fK0sAssocPtRapEmbeded","K^{0}_{S} Assoc - Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
546 fOutput->Add(fK0sAssocPtRapEmbeded);
548 for(Int_t jj=0;jj<kNCent;jj++){
549 snprintf(hNameHist,100, "fK0sAssocPtPhiEta_Cent_%d",jj);
550 fK0sAssocPtPhiEta[jj] = new TH3F(hNameHist,"K^{0}_{S} Assoc;#varphi;#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
551 fOutput->Add(fK0sAssocPtPhiEta[jj]);
555 // Histogramas para estudios sistematicos de la eficiencia
556 Int_t binsEff1[3] = {nbins,nbins,20}; Double_t xminEff1[3] = {0.398,pMin,-1.0}; Double_t xmaxEff1[3] = {0.598,pMax,1.0}; // gral efficiency
557 Int_t binsEff2[4] = {nbins,nbins,20,10}; Double_t xminEff2[4] = {0.398,pMin,-1.0,-10.}; Double_t xmaxEff2[4] = {0.598,pMax,1.0,10.}; // vtx cut
558 Int_t binsEff3[4] = {nbins,nbins,20,60}; Double_t xminEff3[4] = {0.398,pMin,-1.0,0.}; Double_t xmaxEff3[4] = {0.598,pMax,1.0,1.2}; // dca between daughters
559 Int_t binsEff4[4] = {nbins,nbins,20,50}; Double_t xminEff4[4] = {0.398,pMin,-1.0,0.9975}; Double_t xmaxEff4[4] = {0.598,pMax,1.0,1.}; // cpa
560 Int_t binsEff5[5] = {nbins,nbins,20,99,99}; Double_t xminEff5[5] = {0.398,pMin,-1.0,0.,0.}; Double_t xmaxEff5[5] = {0.598,pMax,1.0,3.3,3.3}; // dca to prim. vtx
561 Int_t binsEff6[5] = {nbins,nbins,20,170,170}; Double_t xminEff6[5] = {0.398,pMin,-1.0,0.5,0.5}; Double_t xmaxEff6[5] = {0.598,pMax,1.0,170.5,170}; // No. TPC Cls
563 for(Int_t i=0; i<kNCent; i++){
565 /// ------- Natural particles
566 snprintf(hNameHist,100, "fK0sAssocPtMassArm_Cent_%d",i);
567 fK0sAssocPtMassArm[i] = new THnSparseD(hNameHist,"K^{0}_{S} Assoc;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
568 fOutput->Add(fK0sAssocPtMassArm[i]);
570 snprintf(hNameHist,100, "fK0sAssocMassPtVtx_Cent_%d",i);
571 fK0sAssocMassPtVtx[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
572 fOutput->Add(fK0sAssocMassPtVtx[i]);
574 snprintf(hNameHist,100, "fK0sAssocMassPtDCADaug_Cent_%d",i);
575 fK0sAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
576 fOutput->Add(fK0sAssocMassPtDCADaug[i]);
578 snprintf(hNameHist,100, "fK0sAssocMassPtCPA_Cent_%d",i);
579 fK0sAssocMassPtCPA[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
580 fOutput->Add(fK0sAssocMassPtCPA[i]);
582 snprintf(hNameHist,100, "fK0sAssocMassPtDCAPV_Cent_%d",i);
583 fK0sAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
584 fOutput->Add(fK0sAssocMassPtDCAPV[i]);
586 snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPC_Cent_%d",i);
587 fK0sAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
588 fOutput->Add(fK0sAssocMassPtDaugNClsTPC[i]);
590 /// ----- Embeded particles
591 snprintf(hNameHist,100, "fK0sAssocPtMassArmEmbeded_Cent_%d",i);
592 fK0sAssocPtMassArmEmbeded[i] = new THnSparseD(hNameHist,"K^{0}_{S} Assoc Embeded;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
593 fOutput->Add(fK0sAssocPtMassArmEmbeded[i]);
595 snprintf(hNameHist,100, "fK0sAssocMassPtVtxEmbeded_Cent_%d",i);
596 fK0sAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
597 fOutput->Add(fK0sAssocMassPtVtxEmbeded[i]);
599 snprintf(hNameHist,100, "fK0sAssocMassPtDCADaugEmbeded_Cent_%d",i);
600 fK0sAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
601 fOutput->Add(fK0sAssocMassPtDCADaugEmbeded[i]);
603 snprintf(hNameHist,100, "fK0sAssocMassPtCPAEmbeded_Cent_%d",i);
604 fK0sAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
605 fOutput->Add(fK0sAssocMassPtCPAEmbeded[i]);
607 snprintf(hNameHist,100, "fK0sAssocMassPtDCAPVEmbeded_Cent_%d",i);
608 fK0sAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
609 fOutput->Add(fK0sAssocMassPtDCAPVEmbeded[i]);
611 snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
612 fK0sAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
613 fOutput->Add(fK0sAssocMassPtDaugNClsTPCEmbeded[i]);
617 fK0sMCResEta = new TH3F("fK0sMCResEta","K^{0}_{S} Assoc: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
618 fOutput->Add(fK0sMCResEta);
620 fK0sMCResPhi = new TH3F("fK0sMCResPhi","K^{0}_{S} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
621 fOutput->Add(fK0sMCResPhi);
623 fK0sMCResPt = new TH3F("fK0sMCResPt","K^{0}_{S} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
624 fOutput->Add(fK0sMCResPt);
626 fK0sPosMCResEta = new TH3F("fK0sPosMCResEta","K^{0}_{S} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
627 fOutput->Add(fK0sPosMCResEta);
629 fK0sPosMCResPhi = new TH3F("fK0sPosMCResPhi","K^{0}_{S} Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
630 fOutput->Add(fK0sPosMCResPhi);
632 fK0sPosMCResPt = new TH3F("fK0sPosMCResPt","K^{0}_{S} Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
633 fOutput->Add(fK0sPosMCResPt);
635 fK0sNegMCResEta = new TH3F("fK0sNegMCResEta","K^{0}_{S} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
636 fOutput->Add(fK0sNegMCResEta);
638 fK0sNegMCResPhi = new TH3F("fK0sNegMCResPhi","K^{0}_{S} Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
639 fOutput->Add(fK0sNegMCResPhi);
641 fK0sNegMCResPt = new TH3F("fK0sNegMCResPt","K^{0}_{S} Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
642 fOutput->Add(fK0sNegMCResPt);
645 fLambdaMCPt = new TH1F("fLambdaMCPt","#Lambda MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
646 fOutput->Add(fLambdaMCPt);
648 fLambdaMCPtRap = new TH3F("fLambdaMCPtRap","#Lambda MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
649 fOutput->Add(fLambdaMCPtRap);
651 fLambdaMCPtRap2 = new TH3F("fLambdaMCPtRap2","#Lambda MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
652 fOutput->Add(fLambdaMCPtRap2);
654 for(Int_t jj=0;jj<kNCent;jj++){
655 snprintf(hNameHist,100, "fLambdaMCPtRapVtx_Cent_%d",jj);
656 fLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#Lambda MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
657 fOutput->Add(fLambdaMCPtRapVtx[jj]);
660 fLambdaMCPtRapEmbeded = new TH3F("fLambdaMCPtRapEmbeded","#Lambda Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
661 fOutput->Add(fLambdaMCPtRapEmbeded);
663 for(Int_t jj=0;jj<kNCent;jj++){
664 snprintf(hNameHist,100, "fLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
665 fLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#Lambda Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
666 fOutput->Add(fLambdaMCPtRapVtxEmbeded[jj]);
669 fLambdaMCFromXi = new TH2F("fLambdaMCFromXi", "#Lambda from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
670 fOutput->Add(fLambdaMCFromXi);
672 for(Int_t jj=0;jj<kNCent;jj++){
673 snprintf(hNameHist,100, "fLambdaMCPtPhiEta_Cent_%d",jj);
674 fLambdaMCPtPhiEta[jj] = new TH3F(hNameHist,"#Lambda MC;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
675 fOutput->Add(fLambdaMCPtPhiEta[jj]);
678 // Lambda MC-Association:
680 new TH1F("fLambdaAssocPt","#Lambda Assoc: L_{T} vs #it{p}_{T};#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
681 fOutput->Add(fLambdaAssocPt);
683 fLambdaAssocPtRap = new TH3F("fLambdaAssocPtRap", "#Lambda Assoc;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
684 fOutput->Add(fLambdaAssocPtRap);
686 fLambdaAssocFromXi = new TH2F("fLambdaAssocFromXi", "#Lambda from Xi Assoc;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
687 fOutput->Add(fLambdaAssocFromXi);
689 for(Int_t jj=0;jj<kNCent;jj++){
690 snprintf(hNameHist,100, "fLambdaAssocPtPhiEta_Cent_%d",jj);
691 fLambdaAssocPtPhiEta[jj] = new TH3F(hNameHist, "#Lambda Assoc;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
692 fOutput->Add(fLambdaAssocPtPhiEta[jj]);
695 // Histogramas para estudios sistematicos de la eficiencia
696 Int_t binsEff7[3] = {nbins,nbins,20}; Double_t xminEff7[3] = {1.065,pMin,-1.0}; Double_t xmaxEff7[3] = {1.165,pMax,1.0}; // gral efficiency
697 Int_t binsEff8[4] = {nbins,nbins,20,10}; Double_t xminEff8[4] = {1.065,pMin,-1.0,-10.}; Double_t xmaxEff8[4] = {1.165,pMax,1.0,10.}; // vtx
698 Int_t binsEff9[4] = {nbins,nbins,20,60}; Double_t xminEff9[4] = {1.065,pMin,-1.0,0.}; Double_t xmaxEff9[4] = {1.165,pMax,1.0,1.2}; // dca between daughters
699 Int_t binsEff10[4] = {nbins,nbins,20,50}; Double_t xminEff10[4] = {1.065,pMin,-1.0,0.9975}; Double_t xmaxEff10[4] = {1.165,pMax,1.0,1.}; // cpa
700 Int_t binsEff11[5] = {nbins,nbins,20,99,99}; Double_t xminEff11[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEff11[5] = {1.165,pMax,1.0,3.3,3.3}; // dca to prim. vtx
701 Int_t binsEff12[5] = {nbins,nbins,20,170,170}; Double_t xminEff12[5] = {1.065,pMin,-1.0,0.5,0.5}; Double_t xmaxEff12[5] = {1.165,pMax,1.0,170.5,170.5}; // No. TPC Cls
703 for(Int_t i=0; i<kNCent; i++){
705 // --------- Natural particles
706 snprintf(hNameHist,100, "fLambdaAssocMassPtRap_Cent_%d",i);
707 fLambdaAssocMassPtRap[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
708 fOutput->Add(fLambdaAssocMassPtRap[i]);
710 snprintf(hNameHist,100, "fLambdaAssocMassPtRap2_Cent_%d",i);
711 fLambdaAssocMassPtRap2[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
712 fOutput->Add(fLambdaAssocMassPtRap2[i]);
714 snprintf(hNameHist,100, "fLambdaAssocMassPtVtx_Cent_%d",i);
715 fLambdaAssocMassPtVtx[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
716 fOutput->Add(fLambdaAssocMassPtVtx[i]);
718 snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaug_Cent_%d",i);
719 fLambdaAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
720 fOutput->Add(fLambdaAssocMassPtDCADaug[i]);
722 snprintf(hNameHist,100, "fLambdaAssocMassPtCPA_Cent_%d",i);
723 fLambdaAssocMassPtCPA[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
724 fOutput->Add(fLambdaAssocMassPtCPA[i]);
726 snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPV_Cent_%d",i);
727 fLambdaAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
728 fOutput->Add(fLambdaAssocMassPtDCAPV[i]);
730 snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
731 fLambdaAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
732 fOutput->Add(fLambdaAssocMassPtDaugNClsTPC[i]);
734 // ------------ Embeded particles
735 snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded_Cent_%d",i);
736 fLambdaAssocMassPtRapEmbeded[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
737 fOutput->Add(fLambdaAssocMassPtRapEmbeded[i]);
739 snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
740 fLambdaAssocMassPtRapEmbeded2[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
741 fOutput->Add(fLambdaAssocMassPtRapEmbeded2[i]);
743 snprintf(hNameHist,100, "fLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
744 fLambdaAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
745 fOutput->Add(fLambdaAssocMassPtVtxEmbeded[i]);
747 snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
748 fLambdaAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
749 fOutput->Add(fLambdaAssocMassPtDCADaugEmbeded[i]);
751 snprintf(hNameHist,100, "fLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
752 fLambdaAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
753 fOutput->Add(fLambdaAssocMassPtCPAEmbeded[i]);
755 snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
756 fLambdaAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
757 fOutput->Add(fLambdaAssocMassPtDCAPVEmbeded[i]);
759 snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
760 fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
761 fOutput->Add(fLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
764 fLambdaMCResEta = new TH3F("fLambdaMCResEta","#Lambda Assoc: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
765 fOutput->Add(fLambdaMCResEta);
767 fLambdaMCResPhi = new TH3F("fLambdaMCResPhi","#Lambda Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
768 fOutput->Add(fLambdaMCResPhi);
770 fLambdaMCResPt = new TH3F("fLambdaMCResPt","#Lambda Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
771 fOutput->Add(fLambdaMCResPt);
773 fLambdaPosMCResEta = new TH3F("fLambdaPosMCResEta","#Lambda Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
774 fOutput->Add(fLambdaPosMCResEta);
776 fLambdaPosMCResPhi = new TH3F("fLambdaPosMCResPhi","#Lambda Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
777 fOutput->Add(fLambdaPosMCResPhi);
779 fLambdaPosMCResPt = new TH3F("fLambdaPosMCResPt","#Lambda Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
780 fOutput->Add(fLambdaPosMCResPt);
782 fLambdaNegMCResEta = new TH3F("fLambdaNegMCResEta","#Lambda Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
783 fOutput->Add(fLambdaNegMCResEta);
785 fLambdaNegMCResPhi = new TH3F("fLambdaNegMCResPhi","#Lambda Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
786 fOutput->Add(fLambdaNegMCResPhi);
788 fLambdaNegMCResPt = new TH3F("fLambdaNegMCResPt","#Lambda Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
789 fOutput->Add(fLambdaNegMCResPt);
791 // AntiLambda MC-true:
792 fAntiLambdaMCPt = new TH1F("fAntiLambdaMCPt","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
793 fOutput->Add(fAntiLambdaMCPt);
795 fAntiLambdaMCPtRap = new TH3F("fAntiLambdaMCPtRap","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
796 fOutput->Add(fAntiLambdaMCPtRap);
798 fAntiLambdaMCPtRap2 = new TH3F("fAntiLambdaMCPtRap2","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
799 fOutput->Add(fAntiLambdaMCPtRap2);
801 for(Int_t jj=0;jj<kNCent;jj++){
802 snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtx_Cent_%d",jj);
803 fAntiLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#bar{#Lambda} MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
804 fOutput->Add(fAntiLambdaMCPtRapVtx[jj]);
807 fAntiLambdaMCPtRapEmbeded = new TH3F("fAntiLambdaMCPtRapEmbeded","#bar{#Lambda} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
808 fOutput->Add(fAntiLambdaMCPtRapEmbeded);
810 for(Int_t jj=0;jj<kNCent;jj++){
811 snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
812 fAntiLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#bar{#Lambda} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
813 fOutput->Add(fAntiLambdaMCPtRapVtxEmbeded[jj]);
816 fAntiLambdaMCFromXi = new TH2F("fAntiLambdaMCFromXi", "#bar{#Lambda} from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
817 fOutput->Add(fAntiLambdaMCFromXi);
819 for(Int_t jj=0;jj<kNCent;jj++){
820 snprintf(hNameHist,100, "fAntiLambdaMCPtPhiEta_Cent_%d",jj);
821 fAntiLambdaMCPtPhiEta[jj] = new TH3F(hNameHist,"#bar{#Lambda} MC;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
822 fOutput->Add(fAntiLambdaMCPtPhiEta[jj]);
825 // AntiLambda MC-Association:
827 new TH1F("fAntiLambdaAssocPt","#bar{#Lambda} Assoc: L_{T} vs #it{p}_{T};#it{p}_{T} (GeV/#it{c})",nbins,pMin,pMax);
828 fOutput->Add(fAntiLambdaAssocPt);
830 fAntiLambdaAssocPtRap = new TH3F("fAntiLambdaAssocPtRap", "#bar{#Lambda} Assoc;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
831 fOutput->Add(fAntiLambdaAssocPtRap);
833 fAntiLambdaAssocFromXi = new TH2F("fAntiLambdaAssocFromXi", "#bar{#Lambda} from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
834 fOutput->Add(fAntiLambdaAssocFromXi);
836 for(Int_t jj=0;jj<kNCent;jj++){
837 snprintf(hNameHist,100, "fAntiLambdaAssocPtPhiEta_Cent_%d",jj);
838 fAntiLambdaAssocPtPhiEta[jj] = new TH3F(hNameHist, "#Lambda Assoc;#varphi (rad);#eta;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),20,-1.0,1.0,nbins,pMin,pMax);
839 fOutput->Add(fAntiLambdaAssocPtPhiEta[jj]);
842 // Histogramas para estudios sistematicos de la eficiencia
843 Int_t binsEff13[3] = {nbins,nbins,20}; Double_t xminEff13[3] = {1.065,pMin,-1.0}; Double_t xmaxEff13[3] = {1.165,pMax,1.0}; // gral efficiency
844 Int_t binsEff14[4] = {nbins,nbins,20,10}; Double_t xminEff14[4] = {1.065,pMin,-1.0,-10.}; Double_t xmaxEff14[4] = {1.165,pMax,1.0,10.}; // vtx
845 Int_t binsEff15[4] = {nbins,nbins,20,60}; Double_t xminEff15[4] = {1.065,pMin,-1.0,0.}; Double_t xmaxEff15[4] = {1.165,pMax,1.0,1.2}; // dca between daug
846 Int_t binsEff16[4] = {nbins,nbins,20,50}; Double_t xminEff16[4] = {1.065,pMin,-1.0,0.9975}; Double_t xmaxEff16[4] = {1.165,pMax,1.0,1.}; // cpa
847 Int_t binsEff17[5] = {nbins,nbins,20,99,99}; Double_t xminEff17[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEff17[5] = {1.165,pMax,1.0,3.3,3.3}; // dca to prim. vtx
848 Int_t binsEff18[5] = {nbins,nbins,20,170,170}; Double_t xminEff18[5] = {1.065,pMin,-1.0,0.5,0.5}; Double_t xmaxEff18[5] = {1.165,pMax,1.0,170.5,170.5}; // No. TPC Cls
850 for(Int_t i=0; i<kNCent; i++){
851 // --------- Natural particles
852 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap_Cent_%d",i);
853 fAntiLambdaAssocMassPtRap[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
854 fOutput->Add(fAntiLambdaAssocMassPtRap[i]);
856 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap2_Cent_%d",i);
857 fAntiLambdaAssocMassPtRap2[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
858 fOutput->Add(fAntiLambdaAssocMassPtRap2[i]);
860 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtx_Cent_%d",i);
861 fAntiLambdaAssocMassPtVtx[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
862 fOutput->Add(fAntiLambdaAssocMassPtVtx[i]);
864 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaug_Cent_%d",i);
865 fAntiLambdaAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
866 fOutput->Add(fAntiLambdaAssocMassPtDCADaug[i]);
868 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPA_Cent_%d",i);
869 fAntiLambdaAssocMassPtCPA[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
870 fOutput->Add(fAntiLambdaAssocMassPtCPA[i]);
872 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPV_Cent_%d",i);
873 fAntiLambdaAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
874 fOutput->Add(fAntiLambdaAssocMassPtDCAPV[i]);
876 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
877 fAntiLambdaAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
878 fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPC[i]);
880 // ------------ Embeded particles
881 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded_Cent_%d",i);
882 fAntiLambdaAssocMassPtRapEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
883 fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded[i]);
885 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
886 fAntiLambdaAssocMassPtRapEmbeded2[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
887 fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded2[i]);
889 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
890 fAntiLambdaAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
891 fOutput->Add(fAntiLambdaAssocMassPtVtxEmbeded[i]);
893 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
894 fAntiLambdaAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
895 fOutput->Add(fAntiLambdaAssocMassPtDCADaugEmbeded[i]);
897 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
898 fAntiLambdaAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
899 fOutput->Add(fAntiLambdaAssocMassPtCPAEmbeded[i]);
901 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
902 fAntiLambdaAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
903 fOutput->Add(fAntiLambdaAssocMassPtDCAPVEmbeded[i]);
905 snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
906 fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
907 fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
910 fAntiLambdaMCResEta = new TH3F("fAntiLambdaMCResEta","#bar{#Lambda} Assoc: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
911 fOutput->Add(fAntiLambdaMCResEta);
913 fAntiLambdaMCResPhi = new TH3F("fAntiLambdaMCResPhi","#bar{#Lambda} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
914 fOutput->Add(fAntiLambdaMCResPhi);
916 fAntiLambdaMCResPt = new TH3F("fAntiLambdaMCResPt","#bar{#Lambda} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
917 fOutput->Add(fAntiLambdaMCResPt);
919 fAntiLambdaPosMCResEta = new TH3F("fAntiLambdaPosMCResEta","#bar{#Lambda} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
920 fOutput->Add(fAntiLambdaPosMCResEta);
922 fAntiLambdaPosMCResPhi = new TH3F("fAntiLambdaPosMCResPhi","#bar{#Lambda} Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
923 fOutput->Add(fAntiLambdaPosMCResPhi);
925 fAntiLambdaPosMCResPt = new TH3F("fAntiLambdaPosMCResPt","#bar{#Lambda} Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
926 fOutput->Add(fAntiLambdaPosMCResPt);
928 fAntiLambdaNegMCResEta = new TH3F("fAntiLambdaNegMCResEta","#bar{#Lambda} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
929 fOutput->Add(fAntiLambdaNegMCResEta);
931 fAntiLambdaNegMCResPhi = new TH3F("fAntiLambdaNegMCResPhi","#bar{#Lambda} Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
932 fOutput->Add(fAntiLambdaNegMCResPhi);
934 fAntiLambdaNegMCResPt = new TH3F("fAntiLambdaNegMCResPt","#bar{#Lambda} Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
935 fOutput->Add(fAntiLambdaNegMCResPt);
939 // ======================================================== //
940 // ========== Reconstruction information in AOD =========== //
941 fHistArmenterosPodolanski =
942 new TH3F("fHistArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",
943 100,-1.0,1.0,50,0,0.5,7,-0.5,6.5);
944 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(1,"K^{0}_{S} Inv. Mass Peak");
945 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bckg");
946 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(3,"#Lambda Inv. Mass Peak");
947 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(4,"#Lambda Bckg");
948 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} Inv. Mass Peak");
949 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bckg");
950 fOutput->Add(fHistArmenterosPodolanski);
953 new TH3F("fHistArmPodBckg","Armenteros-Podolanski phase space for correlations;#alpha;p_{t} arm",
954 100,-1.0,1.0,50,0,0.5,6,-0.5,5.5);
955 fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S} SigBck: Trig events");
956 fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bck: Trig events");
957 fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#Lambda SigBck: Trig events");
958 fHistArmPodBckg->GetZaxis()->SetBinLabel(4,"#Lambda Bck: Trig events");
959 fHistArmPodBckg->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} SigBck: Trig events");
960 fHistArmPodBckg->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bck: Trig events");
961 fOutput->Add(fHistArmPodBckg);
965 new TH3F("fK0sMass", "K^{0}_{s}: mass vs #it{p}_{T};Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});centrality",nbins,0.398,0.598,nbins,pMin,pMax,100,0.,100.);
966 fOutput->Add(fK0sMass);
969 new TH3F("fK0sMassEmbeded", "K^{0}_{s} Embeded: mass vs #it{p}_{T}",nbins,0.398,0.598,nbins,pMin,pMax,100,0.,100.);
970 fK0sMassEmbeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
971 fK0sMassEmbeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
972 fK0sMassEmbeded->GetZaxis()->SetTitle("centrality");
973 fOutput->Add(fK0sMassEmbeded);
976 new TH3F("fK0sMassPtEta","K^{0}_{s}: Mass vs #it{p}_{T} vs #eta;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});#eta",
977 nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
978 fOutput->Add(fK0sMassPtEta);
980 for(Int_t i=0; i<kNCent; i++){
982 new TH3F(Form("fK0sMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"K^{0}_{s}: mass vs #it{p}_{T} vs y;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});y",
983 nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
984 fOutput->Add(fK0sMassPtRap[i]);
988 new TH3F("fK0sMassPtPhi","K^{0}_{s}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
989 nbins,0.398,0.598,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
990 fOutput->Add(fK0sMassPtPhi);
992 // ================== Correlations =================
994 // ------------------------ Splitting:
995 Double_t binsDev[121];
998 for (Int_t k=-7;k<=4;k++)
999 for (Int_t j=1;j<=10;j++)
1000 binsDev[(k+7)*10+j] = j*TMath::Power(10,k);
1002 Int_t binsSplit[9] = {100,nbins,100,2,301,101,101,120,9}; Double_t xminSplit[9] = {pMin,0.398,pMin,-0.5,-0.001,-0.005,-0.005,0,-0.5}; Double_t xmaxSplit[9] = {pMax,0.598,pMax,1.5,0.3,1.005,1.005,10e+4,8.5};
1004 Int_t binsSplit2[12] = {100,nbins,100,2,10,20,101,101,100,120,99,2};
1005 Double_t xminSplit2[12] = {pMin,0.398,pMin,-0.5,0.,-0.1,-0.005,-0.005,-1.,0,0.,-0.5};
1006 Double_t xmaxSplit2[12] = {pMax,0.598,pMax,1.5,0.1,0.1,1.005,1.005,1.,10e+4,3.3,1.5};
1008 Int_t binsSplit3[6] = {100,nbins,100,46,46,2};
1009 Double_t xminSplit3[6] = {pMin,0.398,pMin,-0.16,-0.16,-0.5};
1010 Double_t xmaxSplit3[6] = {pMax,0.598,pMax,0.16,0.16,1.5};
1012 for(Int_t j=0; j<kNCent; j++){
1014 // positive daughter
1015 fK0sPosDaugSplCheckCovMat[j] = new THnSparseD( Form("fK0sPosDaugSplCheckCovMat_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1016 fK0sPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1017 fOutput->Add(fK0sPosDaugSplCheckCovMat[j]);
1019 // negative daughter
1020 fK0sNegDaugSplCheckCovMat[j] = new THnSparseD( Form("fK0sNegDaugSplCheckCovMat_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1021 fK0sNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1022 fOutput->Add(fK0sNegDaugSplCheckCovMat[j]);
1024 // Positive daughter:
1025 fK0sPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fK0sPosDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
1026 fK0sPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1027 fOutput->Add(fK0sPosDaugdPhiSdEtaS[j]);
1029 // Negative daughter:
1030 fK0sNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fK0sNegDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
1031 fK0sNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1032 fOutput->Add(fK0sNegDaugdPhiSdEtaS[j]);
1035 // Positive daughter:
1036 fK0sPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fK0sPosMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1037 fOutput->Add(fK0sPosMCResdEtaSdPhiS[j]);
1039 // Negative daughter:
1040 fK0sNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fK0sNegMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1041 fOutput->Add(fK0sNegMCResdEtaSdPhiS[j]);
1047 // DCA to prim vertex
1048 fK0sDCADaugToPrimVtx
1049 = new TH3F("fK0sDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l};DCA Pos daug (cm);DCA Neg daug (cm);#it{p}_{T,l} (GeV/#it{c})",
1050 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1051 fOutput->Add(fK0sDCADaugToPrimVtx);
1053 // Spatial Resoltuion between trigger- and asosciated- particles
1054 fK0sSpatialRes = new TH3F("fK0sSpatialRes","K^{0}_{S}: Spatial resolution;#Delta#varphi (rad);trig-assoc. resolution (cm);dec. length (cm)",
1055 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
1056 fOutput->Add(fK0sSpatialRes);
1058 for(Int_t jj=0;jj<kNCent;jj++){
1059 for(Int_t k=0;k<kN1;k++){
1061 // Monte-Carlo level:
1063 snprintf(hNameHist,100, "fK0sdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
1064 fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
1065 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1068 fK0sdPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
1069 fK0sdPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
1070 fK0sdPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
1071 fOutput->Add(fK0sdPhidEtaMC[jj*kN1+k]);
1074 // Reconstruction level:
1075 for(Int_t ll=0;ll<kNVtxZ;ll++){
1076 snprintf(hNameHist,100, "fK0sdPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
1077 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#varphi vs #Delta#eta vs Inv. Mass",
1078 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1081 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
1082 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
1083 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
1084 fOutput->Add(fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
1089 // Correlations (side-band):
1091 = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. #it{p}_{T,l}",
1092 100,0.,15.,nbinPtLP,pMin,ptMaxLP);
1093 fK0sBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
1094 fK0sBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1095 fOutput->Add(fK0sBckgDecLength);
1097 fK0sBckgDCADaugToPrimVtx
1098 = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l}",
1099 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1100 fK0sBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1101 fK0sBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
1102 fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1103 fOutput->Add(fK0sBckgDCADaugToPrimVtx);
1106 new TH2F("fK0sBckgEtaPhi","K^{0}_{s} Bckg: #varphi vs #eta",
1107 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
1108 fK0sBckgEtaPhi->GetXaxis()->SetTitle("#varphi (rad)");
1109 fK0sBckgEtaPhi->GetYaxis()->SetTitle("#eta");
1110 fOutput->Add(fK0sBckgEtaPhi);
1113 = new TH2F("fK0sBckgPhiRadio","K^{0}_{S} Bckg: #varphi vs l_{T}",
1114 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
1115 fK0sBckgPhiRadio->GetXaxis()->SetTitle("#varphi (rad)");
1116 fK0sBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
1117 fOutput->Add(fK0sBckgPhiRadio);
1119 fK0sBckgDCANegDaugToPrimVtx
1120 = new TH2F("fK0sBckgDCANegDaugToPrimVtx","K^{0}_{S} Bckg: dca NegDaughter",
1121 7,-0.5,6.5,90,0.,3.3);
1122 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1123 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1124 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1125 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1126 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1127 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1128 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1129 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1130 fK0sBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
1131 fOutput->Add(fK0sBckgDCANegDaugToPrimVtx);
1133 fK0sBckgDCAPosDaugToPrimVtx
1134 = new TH2F("fK0sBckgDCAPosDaugToPrimVtx","K^{0}_{S} Bckg: dca PosDaughter",
1135 7,-0.5,6.5,90,0.,3.3);
1136 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1137 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1138 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1139 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1140 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1141 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1142 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1143 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1144 fK0sBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
1145 fOutput->Add(fK0sBckgDCAPosDaugToPrimVtx);
1148 = new TH2F("fV0MassCascade","Cascade Reconstruction wi V0's candiates;Invariant Mass (GeV/c^{2});Cascade type",650, 1.2, 2.5,12,0.5,12.5);
1149 fOutput->Add(fV0MassCascade);
1152 // ****** Lambda ******
1154 new TH3F("fLambdaMass","Mass vs #it{p}_{T} for \\Lambda",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1155 fLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1156 fLambdaMass->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1157 fLambdaMass->GetZaxis()->SetTitle("centrality");
1158 fOutput->Add(fLambdaMass);
1160 fLambdaMassEmbeded =
1161 new TH3F("fLambdaMassEmbeded","Mass vs #it{p}_{T} for \\Lambda Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1162 fLambdaMassEmbeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1163 fLambdaMassEmbeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1164 fLambdaMassEmbeded->GetZaxis()->SetTitle("centrality");
1165 fOutput->Add(fLambdaMassEmbeded);
1168 new TH3F("fLambdaMass2","Mass vs #it{p}_{T} for \\Lambda",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1169 fLambdaMass2->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1170 fLambdaMass2->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1171 fLambdaMass2->GetZaxis()->SetTitle("centrality");
1172 fOutput->Add(fLambdaMass2);
1174 fLambdaMass2Embeded =
1175 new TH3F("fLambdaMass2Embeded","Mass vs #it{p}_{T} for \\Lambda Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1176 fLambdaMass2Embeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1177 fLambdaMass2Embeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1178 fLambdaMass2Embeded->GetZaxis()->SetTitle("centrality");
1179 fOutput->Add(fLambdaMass2Embeded);
1182 new TH3F("fLambdaMassPtEta","\\Lambda: mass vs #it{p}_{T} vs #eta;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#eta",
1183 nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1184 fOutput->Add(fLambdaMassPtEta);
1186 for(Int_t i=0; i<kNCent; i++){
1187 fLambdaMassPtRap[i] =
1188 new TH3F(Form("fLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"\\Lambda: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",
1189 nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1190 fOutput->Add(fLambdaMassPtRap[i]);
1194 new TH3F("fLambdaMassPtPhi","#Lambda: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
1195 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
1196 fOutput->Add(fLambdaMassPtPhi);
1198 // ================== Correlations =================
1200 // ----------------Splitting:
1201 xminSplit[1] = 1.065; xmaxSplit[1] = 1.165;
1202 xminSplit2[1] = 1.065; xmaxSplit2[1] = 1.165;
1203 xminSplit3[1] = 1.065; xmaxSplit3[1] = 1.165;
1205 for(Int_t j=0; j<kNCent; j++){
1207 // positive daughter:
1208 fLambdaPosDaugSplCheckCovMat[j] = new THnSparseD( Form("fLambdaPosDaugSplCheckCovMat_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1209 fLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1210 fOutput->Add(fLambdaPosDaugSplCheckCovMat[j]);
1212 // negative daughter:
1213 fLambdaNegDaugSplCheckCovMat[j] = new THnSparseD( Form("fLambdaNegDaugSplCheckCovMat_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1214 fLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1215 fOutput->Add(fLambdaNegDaugSplCheckCovMat[j]);
1217 // Positive daughter:
1218 fLambdaPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fLambdaPosDaugdPhiSdEtaS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
1219 fLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1220 fOutput->Add(fLambdaPosDaugdPhiSdEtaS[j]);
1222 // Negative daughter:
1223 fLambdaNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fLambdaNegDaugdPhiSdEtaS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
1224 fLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1225 fOutput->Add(fLambdaNegDaugdPhiSdEtaS[j]);
1228 // Positive daughter:
1229 fLambdaPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fLambdaPosMCResdEtaSdPhiS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1230 fOutput->Add(fLambdaPosMCResdEtaSdPhiS[j]);
1232 // Negative daughter:
1233 fLambdaNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fLambdaNegMCResdEtaSdPhiS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1234 fOutput->Add(fLambdaNegMCResdEtaSdPhiS[j]);
1240 // DCA to prim vertex
1241 fLambdaDCADaugToPrimVtx
1242 = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
1243 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1244 fLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1245 fLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
1246 fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1247 fOutput->Add(fLambdaDCADaugToPrimVtx);
1249 // Spatial Resoltuion between trigger- and asosciated- particles
1250 fLambdaSpatialRes = new TH3F("fLambdaSpatialRes","#Lambda: Spatial resolution;#Delta#varphi (rad);trig-assoc. resolution (cm);dec. length (cm)",
1251 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
1252 fOutput->Add(fLambdaSpatialRes);
1255 for(Int_t jj=0;jj<kNCent;jj++){
1256 for(Int_t k=0;k<kN1;k++){
1258 // Monte-Carlo level:
1260 snprintf(hNameHist,100, "fLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
1261 fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
1262 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1265 fLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
1266 fLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
1267 fLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
1268 fOutput->Add(fLambdadPhidEtaMC[jj*kN1+k]);
1271 // Reconstruction level:
1272 for(Int_t ll=0;ll<kNVtxZ;ll++){
1273 snprintf(hNameHist,100, "fLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
1274 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
1275 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1278 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
1279 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
1280 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
1281 fOutput->Add(fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
1286 // Correlations (side-band):
1287 fLambdaBckgDecLength
1288 = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. #it{p}_{T,l}",
1289 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
1290 fLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
1291 fLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1292 fOutput->Add(fLambdaBckgDecLength);
1294 fLambdaBckgDCADaugToPrimVtx
1295 = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
1296 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1297 fLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1298 fLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
1299 fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1300 fOutput->Add(fLambdaBckgDCADaugToPrimVtx);
1303 new TH2F("fLambdaBckgEtaPhi","#Lambda Bckg: #varphi vs #eta",
1304 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
1305 fLambdaBckgEtaPhi->GetXaxis()->SetTitle("#varphi (rad)");
1306 fLambdaBckgEtaPhi->GetYaxis()->SetTitle("#eta");
1307 fOutput->Add(fLambdaBckgEtaPhi);
1310 = new TH2F("fLambdaBckgPhiRadio","#Lambda Bckg: #varphi vs l_{T}",
1311 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
1312 fLambdaBckgPhiRadio->GetXaxis()->SetTitle("#varphi (rad)");
1313 fLambdaBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
1314 fOutput->Add(fLambdaBckgPhiRadio);
1317 fLambdaBckgDCANegDaugToPrimVtx
1318 = new TH2F("fLambdaBckgDCANegDaugToPrimVtx","#Lambda Bckg: dca NegDaughter",
1319 7,-0.5,6.5,90,0.,3.3);
1320 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1321 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1322 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1323 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1324 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1325 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1326 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1327 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1328 fLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
1329 fOutput->Add(fLambdaBckgDCANegDaugToPrimVtx);
1332 fLambdaBckgDCAPosDaugToPrimVtx
1333 = new TH2F("fLambdaBckgDCAPosDaugToPrimVtx","#Lambda Bckg: dca PosDaughter",
1334 7,-0.5,6.5,90,0.,3.3);
1335 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1336 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1337 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1338 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1339 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1340 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1341 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1342 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1343 fLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
1344 fOutput->Add(fLambdaBckgDCAPosDaugToPrimVtx);
1347 // ****** AntiLambda ******
1349 new TH3F("fAntiLambdaMass","Mass vs #it{p}_{T} for #bar{#Lambda}",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1350 fAntiLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1351 fAntiLambdaMass->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1352 fAntiLambdaMass->GetZaxis()->SetTitle("centrality");
1353 fOutput->Add(fAntiLambdaMass);
1355 fAntiLambdaMassEmbeded =
1356 new TH3F("fAntiLambdaMassEmbeded","Mass vs #it{p}_{T} for #bar{#Lambda} Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1357 fAntiLambdaMassEmbeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1358 fAntiLambdaMassEmbeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1359 fAntiLambdaMassEmbeded->GetZaxis()->SetTitle("centrality");
1360 fOutput->Add(fAntiLambdaMassEmbeded);
1363 new TH3F("fAntiLambdaMass2","Mass vs #it{p}_{T} for #bar{#Lambda}",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1364 fAntiLambdaMass2->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1365 fAntiLambdaMass2->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1366 fAntiLambdaMass2->GetZaxis()->SetTitle("centrality");
1367 fOutput->Add(fAntiLambdaMass2);
1369 fAntiLambdaMass2Embeded =
1370 new TH3F("fAntiLambdaMass2Embeded","Mass vs #it{p}_{T} for #bar{#Lambda} Embeded",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
1371 fAntiLambdaMass2Embeded->GetXaxis()->SetTitle("Mass (GeV/c^2)");
1372 fAntiLambdaMass2Embeded->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
1373 fAntiLambdaMass2Embeded->GetZaxis()->SetTitle("centrality");
1374 fOutput->Add(fAntiLambdaMass2Embeded);
1376 fAntiLambdaMassPtEta =
1377 new TH3F("fAntiLambdaMassPtEta","#bar{#Lambda}: mass vs #it{p}_{T} vs #eta;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#eta",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1378 fOutput->Add(fAntiLambdaMassPtEta);
1380 for(Int_t i=0; i<kNCent; i++){
1381 fAntiLambdaMassPtRap[i] =
1382 new TH3F(Form("fAntiLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"#bar{#Lambda}: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
1383 fOutput->Add(fAntiLambdaMassPtRap[i]);
1386 fAntiLambdaMassPtPhi =
1387 new TH3F("fAntiLambdaMassPtPhi","#bar{#Lambda}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
1388 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
1389 fOutput->Add(fAntiLambdaMassPtPhi);
1393 // ================== Correlations =================
1395 // ----------------Splitting:
1396 for(Int_t j=0; j<kNCent; j++){
1398 // positive daughter:
1399 fAntiLambdaPosDaugSplCheckCovMat[j] = new THnSparseD(Form("fAntiLambdaPosDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1400 fAntiLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1401 fOutput->Add(fAntiLambdaPosDaugSplCheckCovMat[j]);
1403 // negative daughter:
1404 fAntiLambdaNegDaugSplCheckCovMat[j] = new THnSparseD(Form("fAntiLambdaNegDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
1405 fAntiLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
1406 fOutput->Add(fAntiLambdaNegDaugSplCheckCovMat[j]);
1408 // Positive daughter:
1409 fAntiLambdaPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fAntiLambdaPosDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
1410 fAntiLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1411 fOutput->Add(fAntiLambdaPosDaugdPhiSdEtaS[j]);
1413 // Negative daughter:
1414 fAntiLambdaNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fAntiLambdaNegDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
1415 fAntiLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
1416 fOutput->Add(fAntiLambdaNegDaugdPhiSdEtaS[j]);
1419 // Positive daughter:
1420 fAntiLambdaPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fAntiLambdaPosMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1421 fOutput->Add(fAntiLambdaPosMCResdEtaSdPhiS[j]);
1423 // Negative daughter:
1424 fAntiLambdaNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fAntiLambdaNegMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
1425 fOutput->Add(fAntiLambdaNegMCResdEtaSdPhiS[j]);
1432 // DCA to prim vertex
1433 fAntiLambdaDCADaugToPrimVtx
1434 = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
1435 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1436 fAntiLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1437 fAntiLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
1438 fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1439 fOutput->Add(fAntiLambdaDCADaugToPrimVtx);
1441 // Spatial Resoltuion between trigger- and asosciated- particles
1442 fAntiLambdaSpatialRes = new TH3F("fAntiLambdaSpatialRes","#bar{#Lambda}: Spatial resolution;#Delta#varphi (rad);trig-assoc. resolution (cm);dec. length (cm)",
1443 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
1444 fOutput->Add(fAntiLambdaSpatialRes);
1446 for(Int_t jj=0;jj<kNCent;jj++){
1447 for(Int_t k=0;k<kN1;k++){
1449 // Monte-Carlo level:
1451 snprintf(hNameHist,100, "fAntiLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
1452 fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
1453 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1456 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
1457 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
1458 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
1459 fOutput->Add(fAntiLambdadPhidEtaMC[jj*kN1+k]);
1462 // Reconstruction level:
1463 for(Int_t ll=0;ll<kNVtxZ;ll++){
1464 snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
1465 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
1466 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1469 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
1470 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
1471 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
1472 fOutput->Add(fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
1477 // Correlations (side-band):
1478 fAntiLambdaBckgDecLength
1479 = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. #it{p}_{T,l}",
1480 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
1481 fAntiLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
1482 fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1483 fOutput->Add(fAntiLambdaBckgDecLength);
1485 fAntiLambdaBckgDCADaugToPrimVtx
1486 = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
1487 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1488 fAntiLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1489 fAntiLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
1490 fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
1491 fOutput->Add(fAntiLambdaBckgDCADaugToPrimVtx);
1493 fAntiLambdaBckgEtaPhi =
1494 new TH2F("fAntiLambdaBckgEtaPhi","#bar{#Lambda} Bckg: #varphi vs #eta;#varphi (rad);l_{T} (cm)",
1495 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
1496 fOutput->Add(fAntiLambdaBckgEtaPhi);
1498 fAntiLambdaBckgPhiRadio
1499 = new TH2F("fAntiLambdaBckgPhiRadio","#bar{#Lambda} Bckg: #varphi vs l_{T};#varphi (rad);l_{T} (cm)",
1500 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
1501 fOutput->Add(fAntiLambdaBckgPhiRadio);
1504 fAntiLambdaBckgDCANegDaugToPrimVtx
1505 = new TH2F("fAntiLambdaBckgDCANegDaugToPrimVtx","#bar{#Lambda} Bckg: dca NegDaughter",
1506 7,-0.5,6.5,90,0.,3.3);
1507 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1508 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1509 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1510 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1511 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1512 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1513 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1514 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1515 fAntiLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
1516 fOutput->Add(fAntiLambdaBckgDCANegDaugToPrimVtx);
1519 fAntiLambdaBckgDCAPosDaugToPrimVtx
1520 = new TH2F("fAntiLambdaBckgDCAPosDaugToPrimVtx","#bar{#Lambda} Bckg: dca PosDaughter",
1521 7,-0.5,6.5,90,0.,3.3);
1522 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1523 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1524 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1525 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1526 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1527 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1528 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1529 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1530 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
1531 fOutput->Add(fAntiLambdaBckgDCAPosDaugToPrimVtx);
1534 // ============================================================= //
1537 for(Int_t ll=0;ll<kNCent;ll++){
1538 for(Int_t k=0;k<kN1;k++){
1539 for(Int_t j=0;j<kNVtxZ;j++){
1541 snprintf(hNameHist,100,"fK0sdPhidEtaME_%.2f_%.2f_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
1542 fK0sdPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"K^{0}_{S}: #Delta#varphi vs #Delta#eta in ME;#Delta#varphi (rad);#Delta#eta",
1543 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1544 nbinsdEta,-1.5,1.5);
1545 fOutputME->Add(fK0sdPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1551 for(Int_t ll=0;ll<kNCent;ll++){
1552 for(Int_t k=0;k<kN1;k++){
1553 for(Int_t j=0;j<kNVtxZ;j++){
1555 snprintf(hNameHist,100,"fLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
1556 fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta in ME;#Delta#varphi (rad);#Delta#eta",
1557 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1558 nbinsdEta,-1.5,1.5);
1559 fOutputME->Add(fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1564 // AntiLambda in ME:
1565 for(Int_t ll=0;ll<kNCent;ll++){
1566 for(Int_t k=0;k<kN1;k++){
1567 for(Int_t j=0;j<kNVtxZ;j++){
1569 snprintf(hNameHist,100,"fAntiLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
1570 fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta in ME;#Delta#varphi (rad);#Delta#eta",
1571 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1572 nbinsdEta,-1.5,1.5);
1573 fOutputME->Add(fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1579 // ============================================================= //
1583 // ----------------------------
1584 // Quality Assurance K0s:
1586 // Transverse momentum:
1589 new TH2F("fK0sPtPosDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1590 fOutputQA->Add(fK0sPtPosDaug);
1593 new TH2F("fK0sPtNegDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1594 fOutputQA->Add(fK0sPtNegDaug);
1596 // --- background ---
1598 new TH2F("fK0sBckgPtPosDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1599 fOutputQA->Add(fK0sBckgPtPosDaug);
1602 new TH2F("fK0sBckgPtNegDaug","K^{0}_{S}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1603 fOutputQA->Add(fK0sBckgPtNegDaug);
1608 new TH3F("fK0sPhiEtaPosDaug","K^{0}_{S}: #varphi vs #eta Pos. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1609 fOutputQA->Add(fK0sPhiEtaPosDaug);
1612 new TH3F("fK0sPhiEtaNegDaug","K^{0}_{S}: #varphi vs #eta Neg. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1613 fOutputQA->Add(fK0sPhiEtaNegDaug);
1615 // --- background ---
1616 fK0sBckgPhiEtaPosDaug =
1617 new TH3F("fK0sBckgPhiEtaPosDaug","K^{0}_{S} Bckg: #varphi vs #eta Pos. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1618 fOutputQA->Add(fK0sBckgPhiEtaPosDaug);
1620 fK0sBckgPhiEtaNegDaug =
1621 new TH3F("fK0sBckgPhiEtaNegDaug","K^{0}_{S} Bckg: #varphi vs #eta Neg. Daug.;#varphi;#eta;#it{p}_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1622 fOutputQA->Add(fK0sBckgPhiEtaNegDaug);
1624 // Distance of closest approach:
1627 new TH2F("fK0sDCAPosDaug","K^{0}_{S}: dca Pos;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
1628 fOutputQA->Add(fK0sDCAPosDaug);
1631 new TH2F("fK0sDCANegDaug","K^{0}_{S}: dca Neg;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
1632 fOutputQA->Add(fK0sDCANegDaug);
1634 // --- background ---
1635 fK0sBckgDCAPosDaug =
1636 new TH2F("fK0sBckgDCAPosDaug","K^{0}_{S} Bckg: dca Pos;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
1637 fOutputQA->Add(fK0sBckgDCAPosDaug);
1639 fK0sBckgDCANegDaug =
1640 new TH2F("fK0sBckgDCANegDaug","K^{0}_{S} Bckg: dca Neg;dca;#it{p}_{T} V0",66,0.,3.3,nbins,pMin,pMax);
1641 fOutputQA->Add(fK0sBckgDCANegDaug);
1643 // Decay vertex reconstruction:
1646 new TH3F("fK0sDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1647 fK0sDecayPos->GetXaxis()->SetTitle("Pos. X");
1648 fK0sDecayPos->GetYaxis()->SetTitle("Pos. Y");
1649 fK0sDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
1650 fOutputQA->Add(fK0sDecayPos);
1653 new TH2F("fK0sDecayVertex","K^{0}_{S}: decay length",100,0.,100.,nbins,pMin,pMax);
1654 fK0sDecayVertex->GetXaxis()->SetTitle("l_{T}");
1655 fK0sDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
1656 fOutputQA->Add(fK0sDecayVertex);
1658 // --- background ---
1660 new TH3F("fK0sBckgDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1661 fK0sBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1662 fK0sBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1663 fK0sBckgDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
1664 fOutputQA->Add(fK0sBckgDecayPos);
1666 fK0sBckgDecayVertex =
1667 new TH2F("fK0sBckgDecayVertex","K^{0}_{S} Bckg: decay vertex",100,0.,100.,nbins,pMin,pMax);
1668 fK0sBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1669 fK0sBckgDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
1670 fOutputQA->Add(fK0sBckgDecayVertex);
1672 // Cosine of the Pointing Angle:
1675 new TH2F("fK0sCPA","K^{0}_{S}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1676 fK0sCPA->GetXaxis()->SetTitle("cpa");
1677 fK0sCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
1678 fOutputQA->Add(fK0sCPA);
1679 // --- background ---
1681 new TH2F("fK0sBckgCPA","K^{0}_{S} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1682 fK0sBckgCPA->GetXaxis()->SetTitle("cpa");
1683 fK0sBckgCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
1684 fOutputQA->Add(fK0sBckgCPA);
1686 // DCA between daughters:
1689 new TH2F("fK0sDCAV0Daug","K^{0}_{S}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1690 fK0sDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1691 fK0sDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1692 fOutputQA->Add(fK0sDCAV0Daug);
1693 // --- background ---
1695 new TH2F("fK0sBckgDCAV0Daug","K^{0}_{S} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1696 fK0sBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1697 fK0sBckgDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1698 fOutputQA->Add(fK0sBckgDCAV0Daug);
1700 // Number of TPC clusters:
1702 fK0sNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
1703 new TH3F("fK0sNClustersTPC","K^{0}_{S};#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
1704 fOutputQA->Add(fK0sNClustersTPC);
1705 // --- background ---
1706 fK0sBckgNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
1707 new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
1708 fOutputQA->Add(fK0sBckgNClustersTPC);
1710 // Number of ITS clusters:
1712 fK0sNClustersITSPos =
1713 new TH3F("fK0sNClustersITSPos","K^{0}_{S}: Pos. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1714 fOutputQA->Add(fK0sNClustersITSPos);
1716 fK0sNClustersITSNeg =
1717 new TH3F("fK0sNClustersITSNeg","K^{0}_{S}: Neg. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1718 fOutputQA->Add(fK0sNClustersITSNeg);
1719 // --- background ---
1720 fK0sBckgNClustersITSPos =
1721 new TH3F("fK0sBckgNClustersITSPos","K^{0}_{S} Bckg: Pos. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1722 fOutputQA->Add(fK0sBckgNClustersITSPos);
1724 fK0sBckgNClustersITSNeg =
1725 new TH3F("fK0sBckgNClustersITSNeg","K^{0}_{S} Bckg: Neg. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1726 fOutputQA->Add(fK0sBckgNClustersITSNeg);
1728 // ----------------------------
1729 // Quality Assurance Lambda:
1731 // Transverse momentum:
1734 new TH2F("fLambdaPtPosDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1735 fOutputQA->Add(fLambdaPtPosDaug);
1738 new TH2F("fLambdaPtNegDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1739 fOutputQA->Add(fLambdaPtNegDaug);
1741 // --- background ---
1742 fLambdaBckgPtPosDaug =
1743 new TH2F("fLambdaBckgPtPosDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1744 fOutputQA->Add(fLambdaBckgPtPosDaug);
1746 fLambdaBckgPtNegDaug =
1747 new TH2F("fLambdaBckgPtNegDaug","#Lambda: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1748 fOutputQA->Add(fLambdaBckgPtNegDaug);
1752 fLambdaPhiEtaPosDaug =
1753 new TH3F("fLambdaPhiEtaPosDaug","#Lambda: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1754 fLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
1755 fLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1756 fLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1757 fOutputQA->Add(fLambdaPhiEtaPosDaug);
1759 fLambdaPhiEtaNegDaug =
1760 new TH3F("fLambdaPhiEtaNegDaug","#Lambda: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1761 fLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
1762 fLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1763 fLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1764 fOutputQA->Add(fLambdaPhiEtaNegDaug);
1766 // --- background ---
1767 fLambdaBckgPhiEtaPosDaug =
1768 new TH3F("fLambdaBckgPhiEtaPosDaug","#Lambda: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1769 fLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
1770 fLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1771 fLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1772 fOutputQA->Add(fLambdaBckgPhiEtaPosDaug);
1774 fLambdaBckgPhiEtaNegDaug =
1775 new TH3F("fLambdaBckgPhiEtaNegDaug","#Lambda: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1776 fLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
1777 fLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1778 fLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1779 fOutputQA->Add(fLambdaBckgPhiEtaNegDaug);
1781 // Distance of closest approach
1784 new TH2F("fLambdaDCAPosDaug","#Lambda: dca Pos",66,0.,3.3,nbins,pMin,pMax);
1785 fLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
1786 fLambdaDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1787 fOutputQA->Add(fLambdaDCAPosDaug);
1790 new TH2F("fLambdaDCANegDaug","#Lambda: dca Neg",66,0.,3.3,nbins,pMin,pMax);
1791 fLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
1792 fLambdaDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1793 fOutputQA->Add(fLambdaDCANegDaug);
1795 // --- background ---
1796 fLambdaBckgDCAPosDaug =
1797 new TH2F("fLambdaBckgDCAPosDaug","#Lambda Bckg: dca Pos",66,0.,3.3,nbins,pMin,pMax);
1798 fLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
1799 fLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1800 fOutputQA->Add(fLambdaBckgDCAPosDaug);
1802 fLambdaBckgDCANegDaug =
1803 new TH2F("fLambdaBckgDCANegDaug","#Lambda Bckg: dca Neg",66,0.,3.3,nbins,pMin,pMax);
1804 fLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
1805 fLambdaBckgDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1806 fOutputQA->Add(fLambdaBckgDCANegDaug);
1809 // Decay vertex reconstruction
1812 new TH3F("fLambdaDecayPos","#Lambda: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1813 fLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
1814 fLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
1815 fLambdaDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
1816 fOutputQA->Add(fLambdaDecayPos);
1818 fLambdaDecayVertex =
1819 new TH2F("fLambdaDecayVertex","#Lambda: decay length",100,0.,100.,nbins,pMin,pMax);
1820 fLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
1821 fLambdaDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
1822 fOutputQA->Add(fLambdaDecayVertex);
1824 // --- background ---
1825 fLambdaBckgDecayPos =
1826 new TH3F("fLambdaBckgDecayPos","#Lambda Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1827 fLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1828 fLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1829 fLambdaBckgDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
1830 fOutputQA->Add(fLambdaBckgDecayPos);
1832 fLambdaBckgDecayVertex =
1833 new TH2F("fLambdaBckgDecayVertex","#Lambda Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
1834 fLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1835 fLambdaBckgDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
1836 fOutputQA->Add(fLambdaBckgDecayVertex);
1838 // Cosine of the Pointing Angle
1841 new TH2F("fLambdaCPA","#Lambda: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1842 fLambdaCPA->GetXaxis()->SetTitle("cpa");
1843 fLambdaCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
1844 fOutputQA->Add(fLambdaCPA);
1845 // --- background ---
1847 new TH2F("fLambdaBckgCPA","#Lambda Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1848 fLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
1849 fLambdaBckgCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
1850 fOutputQA->Add(fLambdaBckgCPA);
1852 // DCA between daughters
1855 new TH2F("fLambdaDCAV0Daug","#Lambda: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1856 fLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1857 fLambdaDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1858 fOutputQA->Add(fLambdaDCAV0Daug);
1859 // --- background ---
1860 fLambdaBckgDCAV0Daug =
1861 new TH2F("fLambdaBckgDCAV0Daug","#Lambda Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1862 fLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1863 fLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1864 fOutputQA->Add(fLambdaBckgDCAV0Daug);
1866 // Number of TPC clusters:
1868 fLambdaNClustersTPC =
1869 new TH3F("fLambdaNClustersTPC","#Lambda;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
1870 fOutputQA->Add(fLambdaNClustersTPC);
1871 // --- background ---
1872 fLambdaBckgNClustersTPC =
1873 new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
1874 fOutputQA->Add(fLambdaBckgNClustersTPC);
1876 // Number of ITS clusters:
1878 fLambdaNClustersITSPos =
1879 new TH3F("fLambdaNClustersITSPos","#Lambda: Pos. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1880 fOutputQA->Add(fLambdaNClustersITSPos);
1882 fLambdaNClustersITSNeg =
1883 new TH3F("fLambdaNClustersITSNeg","#Lambda: Neg. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1884 fOutputQA->Add(fLambdaNClustersITSNeg);
1885 // --- background ---
1886 fLambdaBckgNClustersITSPos =
1887 new TH3F("fLambdaBckgNClustersITSPos","#Lambda Bckg: Pos. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1888 fOutputQA->Add(fLambdaBckgNClustersITSPos);
1890 fLambdaBckgNClustersITSNeg =
1891 new TH3F("fLambdaBckgNClustersITSNeg","#Lambda Bckg: Neg. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1892 fOutputQA->Add(fLambdaBckgNClustersITSNeg);
1895 // ----------------------------
1896 // Quality Assurance AntiLambda:
1897 // Transverse momentum:
1899 fAntiLambdaPtPosDaug =
1900 new TH2F("fAntiLambdaPtPosDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1901 fOutputQA->Add(fAntiLambdaPtPosDaug);
1903 fAntiLambdaPtNegDaug =
1904 new TH2F("fAntiLambdaPtNegDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1905 fOutputQA->Add(fAntiLambdaPtNegDaug);
1907 // --- background ---
1908 fAntiLambdaBckgPtPosDaug =
1909 new TH2F("fAntiLambdaBckgPtPosDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1910 fOutputQA->Add(fAntiLambdaBckgPtPosDaug);
1912 fAntiLambdaBckgPtNegDaug =
1913 new TH2F("fAntiLambdaBckgPtNegDaug","#bar{#Lambda}: #it{p}_{T};#it{p}_{T};#it{p}_{T} V0",nbins,pMin,pMax,nbins,pMin,pMax);
1914 fOutputQA->Add(fAntiLambdaBckgPtNegDaug);
1918 fAntiLambdaPhiEtaPosDaug =
1919 new TH3F("fAntiLambdaPhiEtaPosDaug","#bar{#Lambda}: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1920 fAntiLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
1921 fAntiLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1922 fAntiLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1923 fOutputQA->Add(fAntiLambdaPhiEtaPosDaug);
1925 fAntiLambdaPhiEtaNegDaug =
1926 new TH3F("fAntiLambdaPhiEtaNegDaug","#bar{#Lambda}: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1927 fAntiLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
1928 fAntiLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1929 fAntiLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1930 fOutputQA->Add(fAntiLambdaPhiEtaNegDaug);
1932 // --- background ---
1933 fAntiLambdaBckgPhiEtaPosDaug =
1934 new TH3F("fAntiLambdaBckgPhiEtaPosDaug","#bar{#Lambda}: #varphi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1935 fAntiLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#varphi");
1936 fAntiLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1937 fAntiLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1938 fOutputQA->Add(fAntiLambdaBckgPhiEtaPosDaug);
1940 fAntiLambdaBckgPhiEtaNegDaug =
1941 new TH3F("fAntiLambdaBckgPhiEtaNegDaug","#bar{#Lambda}: #varphi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1942 fAntiLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#varphi");
1943 fAntiLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1944 fAntiLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("#it{p}_{T} V0");
1945 fOutputQA->Add(fAntiLambdaBckgPhiEtaNegDaug);
1947 // Distance of closest approach
1949 fAntiLambdaDCAPosDaug =
1950 new TH2F("fAntiLambdaDCAPosDaug","#bar{#Lambda}: dca Pos",66,0.,3.3,nbins,pMin,pMax);
1951 fAntiLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
1952 fAntiLambdaDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1953 fOutputQA->Add(fAntiLambdaDCAPosDaug);
1955 fAntiLambdaDCANegDaug =
1956 new TH2F("fAntiLambdaDCANegDaug","#bar{#Lambda}: dca Neg",66,0.,3.3,nbins,pMin,pMax);
1957 fAntiLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
1958 fAntiLambdaDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1959 fOutputQA->Add(fAntiLambdaDCANegDaug);
1961 // --- background ---
1962 fAntiLambdaBckgDCAPosDaug =
1963 new TH2F("fAntiLambdaBckgDCAPosDaug","#bar{#Lambda} Bckg: dca Pos",66,0.,3.3,nbins,pMin,pMax);
1964 fAntiLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
1965 fAntiLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1966 fOutputQA->Add(fAntiLambdaBckgDCAPosDaug);
1968 fAntiLambdaBckgDCANegDaug =
1969 new TH2F("fAntiLambdaBckgDCANegDaug","#bar{#Lambda} Bckg: dca Neg",66,0.,3.3,nbins,pMin,pMax);
1970 fAntiLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
1971 fAntiLambdaBckgDCANegDaug->GetYaxis()->SetTitle("#it{p}_{T} V0");
1972 fOutputQA->Add(fAntiLambdaBckgDCANegDaug);
1974 // Decay vertex reconstruction
1976 fAntiLambdaDecayPos =
1977 new TH3F("fAntiLambdaDecayPos","#bar{#Lambda}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1978 fAntiLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
1979 fAntiLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
1980 fAntiLambdaDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
1981 fOutputQA->Add(fAntiLambdaDecayPos);
1983 fAntiLambdaDecayVertex =
1984 new TH2F("fAntiLambdaDecayVertex","#bar{#Lambda}: decay length",100,0.,100.,nbins,pMin,pMax);
1985 fAntiLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
1986 fAntiLambdaDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
1987 fOutputQA->Add(fAntiLambdaDecayVertex);
1989 // --- background ---
1990 fAntiLambdaBckgDecayPos =
1991 new TH3F("fAntiLambdaBckgDecayPos","#bar{#Lambda} Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1992 fAntiLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1993 fAntiLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1994 fAntiLambdaBckgDecayPos->GetZaxis()->SetTitle("#it{p}_{T} V0");
1995 fOutputQA->Add(fAntiLambdaBckgDecayPos);
1997 fAntiLambdaBckgDecayVertex =
1998 new TH2F("fAntiLambdaBckgDecayVertex","#bar{#Lambda} Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
1999 fAntiLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
2000 fAntiLambdaBckgDecayVertex->GetYaxis()->SetTitle("#it{p}_{T} V0");
2001 fOutputQA->Add(fAntiLambdaBckgDecayVertex);
2003 // Cosine of the Pointing Angle
2006 new TH2F("fAntiLambdaCPA","#bar{#Lambda}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
2007 fAntiLambdaCPA->GetXaxis()->SetTitle("cpa");
2008 fAntiLambdaCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
2009 fOutputQA->Add(fAntiLambdaCPA);
2010 // --- background ---
2011 fAntiLambdaBckgCPA =
2012 new TH2F("fAntiLambdaBckgCPA","#bar{#Lambda} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
2013 fAntiLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
2014 fAntiLambdaBckgCPA->GetYaxis()->SetTitle("#it{p}_{T} V0");
2015 fOutputQA->Add(fAntiLambdaBckgCPA);
2017 // DCA between daughters
2019 fAntiLambdaDCAV0Daug =
2020 new TH2F("fAntiLambdaDCAV0Daug","#bar{#Lambda}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
2021 fAntiLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
2022 fAntiLambdaDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
2023 fOutputQA->Add(fAntiLambdaDCAV0Daug);
2024 // --- background ---
2025 fAntiLambdaBckgDCAV0Daug =
2026 new TH2F("fAntiLambdaBckgDCAV0Daug","#bar{#Lambda} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
2027 fAntiLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
2028 fAntiLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("#it{p}_{T} V0");
2029 fOutputQA->Add(fAntiLambdaBckgDCAV0Daug);
2031 // Number of TPC clusters:
2033 fAntiLambdaNClustersTPC =
2034 new TH3F("fAntiLambdaNClustersTPC","#bar{#Lambda};#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
2035 fOutputQA->Add(fAntiLambdaNClustersTPC);
2036 // --- background ---
2037 fAntiLambdaBckgNClustersTPC =
2038 new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
2039 fOutputQA->Add(fAntiLambdaBckgNClustersTPC);
2041 // Number of ITS clusters:
2043 fAntiLambdaNClustersITSPos =
2044 new TH3F("fAntiLambdaNClustersITSPos","#bar{#Lambda}: Pos. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
2045 fOutputQA->Add(fAntiLambdaNClustersITSPos);
2047 fAntiLambdaNClustersITSNeg =
2048 new TH3F("fAntiLambdaNClustersITSNeg","#bar{#Lambda}: Neg. Daug;#varphi;Num. ITS Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
2049 fOutputQA->Add(fAntiLambdaNClustersITSNeg);
2050 // --- background ---
2051 fAntiLambdaBckgNClustersITSPos =
2052 new TH3F("fAntiLambdaBckgNClustersITSPos","#bar{#Lambda} Bckg: Pos. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
2053 fOutputQA->Add(fAntiLambdaBckgNClustersITSPos);
2055 fAntiLambdaBckgNClustersITSNeg =
2056 new TH3F("fAntiLambdaBckgNClustersITSNeg","#bar{#Lambda} Bckg: Neg. Daug;#varphi;Num. ITS Clusters;;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
2057 fOutputQA->Add(fAntiLambdaBckgNClustersITSNeg);
2061 // ============================================================= //
2063 PostData(1, fOutput);
2064 PostData(2, fOutputME);
2065 PostData(3, fOutputQA);
2069 //___________________________________________________________________________________________
2071 static Int_t VtxBin(Double_t vtx)
2073 // Bin in vertez position Z
2075 for(Int_t i=0;i<kNVtxZ;i++)
2076 if ( (vtx>=kBinVtxZ[i]) && (vtx<kBinVtxZ[i+1]) )
2083 //___________________________________________________________________________________________
2085 static Int_t PtBin(Double_t pt)
2089 for(Int_t i=0;i<kN1;i++)
2090 if ( (pt>=kPtBinV0[i]) && (pt<kPtBinV0[i+1]) )
2097 //___________________________________________________________________________________________
2099 static Int_t CentBin(Double_t cent)
2103 for(Int_t i=0;i<kNCent;i++)
2104 if ( (cent>=kBinCent[i]) && (cent<kBinCent[i+1]) )
2111 //___________________________________________________________________________________________
2113 Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(const AliAODTrack *t)
2115 // Track criteria for primaries particles
2117 if (TMath::Abs(t->Eta())>0.8 ) return kFALSE;
2119 //if (!(t->TestFilterMask(1<<7))) return kFALSE;
2121 if( !(t->TestFilterBit(272)) ) return kFALSE;
2123 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
2124 if (nCrossedRowsTPC < 70) return kFALSE;
2127 Int_t SPDHits = t->HasPointOnITSLayer(0) + t->HasPointOnITSLayer(1);
2129 fTriggerWiSPDHit->Fill(1.5);
2134 //___________________________________________________________________________________________
2136 Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrackV0(const AliAODTrack *t)
2138 // Track criteria for daughter particles of V0 candidate
2139 if (!t->IsOn(AliAODTrack::kTPCrefit)) return kFALSE;
2140 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
2141 if (nCrossedRowsTPC<fDaugNClsTPC) return kFALSE;
2146 //___________________________________________________________________________________________
2148 Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptV0(AliAODVertex *vtx, const AliAODv0 *v1)
2150 // Selection for accepting V0 candidates
2152 if (v1->GetOnFlyStatus()) return kFALSE;
2154 //if (v1->Pt() < pMin) return kFALSE; ***
2156 const AliAODTrack *ntrack1=(AliAODTrack *)v1->GetDaughter(1);
2157 const AliAODTrack *ptrack1=(AliAODTrack *)v1->GetDaughter(0);
2159 if( !ntrack1 || !ptrack1 ) return kFALSE;
2160 if( !AcceptTrackV0(ntrack1) ) return kFALSE;
2161 if( !AcceptTrackV0(ptrack1) ) return kFALSE;
2163 if( ntrack1->Charge() == ptrack1->Charge())
2166 // Daughters: pseudo-rapidity cut
2167 if ( TMath::Abs(ntrack1->Eta()) > fMaxEtaDaughter ||
2168 TMath::Abs(ptrack1->Eta()) > fMaxEtaDaughter )
2171 // Daughters: transverse momentum cut
2172 if ( ( ntrack1->Pt() < fMinPtDaughter ) ||
2173 ( ptrack1->Pt() < fMinPtDaughter ) )
2176 // Daughters: Impact parameter of daughter to prim vtx
2177 Float_t xy = v1->DcaNegToPrimVertex();
2178 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
2179 xy = v1->DcaPosToPrimVertex();
2180 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
2183 Float_t dca = v1->DcaV0Daughters();
2184 if (dca>fMaxDCADaughter) return kFALSE;
2186 // V0: Cosine of the pointing angle
2187 Float_t cpa=v1->CosPointingAngle(vtx);
2188 if (cpa<fMinCPA) return kFALSE;
2190 // V0: Fiducial volume
2191 Double_t xyz[3]; v1->GetSecondaryVtx(xyz);
2192 Float_t r2=xyz[0]*xyz[0] + xyz[1]*xyz[1];
2193 if (r2<5.*5.) return kFALSE;
2194 if (r2>lMax*lMax) return kFALSE;
2199 //___________________________________________________________________________________________
2201 static Float_t dPHI(Float_t phi1, Float_t phi2)
2203 // Calculate the phi difference between two tracks
2204 Float_t deltaPhi = phi1 - phi2;
2206 if (deltaPhi<-TMath::PiOver2()) deltaPhi = deltaPhi + 2*(TMath::Pi());
2207 if (deltaPhi>(3*TMath::PiOver2())) deltaPhi = deltaPhi - 2*(TMath::Pi());
2211 //___________________________________________________________________________________________
2213 static Float_t MyRapidity(Float_t rE, Float_t rPz)
2215 // Local method for rapidity
2216 return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
2219 //___________________________________________________________________________________________
2221 static Int_t SameTrack(const AliAODTrack *trig, const AliAODTrack *daug)
2223 // Local method to compaire the momentum between two tracks
2225 //double const kEpsilon = 0.01;
2229 Float_t p[3]; trk->GetPxPyPz(p);
2230 Float_t pNegTrk[3]; nTrk->GetPxPyPz(pNegTrk);
2231 Float_t pPosTrk[3]; pTrk->GetPxPyPz(pPosTrk);
2233 if( ( fabs(p[0]-pNegTrk[0])<kEpsilon &&
2234 fabs(p[1]-pNegTrk[1])<kEpsilon &&
2235 fabs(p[2]-pNegTrk[2])<kEpsilon )
2239 if( (TMath::Abs(daug->GetID())+1)==(TMath::Abs(trig->GetID())) )
2247 //___________________________________________________________________________________________
2249 static Int_t SameLabel(const AliAODTrack *trig, const AliAODTrack *daug)
2251 // Compaire the the label value that points back to the Monte Carlo production
2252 //cout << trig->GetLabel() << " " << daug->GetLabel() << endl;
2254 if( TMath::Abs(trig->GetLabel() ) ==
2255 TMath::Abs(daug->GetLabel() ) )
2262 //___________________________________________________________________________________________
2264 static Float_t SpatialResolution(Float_t p1x,Float_t p1y,Float_t p2x,Float_t p2y,Float_t dist)
2266 // Obtains the spacial resolution between trigger and V0
2267 // within a distance in (deltaPhi,deltaEta) < 0.1
2269 Float_t res = -100.;
2271 res = TMath::Sqrt( p1x*p1x + p1y*p1y )*TMath::Sqrt( p2x*p2x + p2y*p2y );
2272 res = (p1x*p2x + p1y*p2y)/res;
2274 res = TMath::ACos(res);
2276 return res = TMath::Sin(res)*dist;
2280 //___________________________________________________________________________________________
2282 static Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign)
2285 // calculates dphistar
2288 Float_t dphistar = phi1 - phi2 - charge1 * bSign * TMath::ASin(0.075 * radius / pt1) + charge2 * bSign * TMath::ASin(0.075 * radius / pt2);
2289 static const Double_t kPi = TMath::Pi();
2293 dphistar = kPi * 2 - dphistar;
2294 if (dphistar < -kPi)
2295 dphistar = -kPi * 2 - dphistar;
2296 if (dphistar > kPi) // might look funny but is needed
2297 dphistar = kPi * 2 - dphistar;
2304 //___________________________________________________________________________________________
2306 static Float_t TwoTrackEfficiencyCut(Float_t phi1, Float_t eta1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t eta2, Float_t pt2, Float_t charge2, Float_t bSign)
2308 // Code taken from the HBT analysis to reject the track splitting
2309 // It was modified to provide only the value of kDphiStarMax
2310 // and a possible rejection in the kDphiStarMean
2312 Float_t kRadiousDphiStarMax = -0.0005;
2313 Float_t deta = eta1 - eta2;
2314 Float_t twoTrackEfficiencyCutValue = 0.02;
2317 if (TMath::Abs(deta) < twoTrackEfficiencyCutValue * 2.5 * 3) {
2319 // check first boundaries to see if is worth to loop and find the minimum
2320 Float_t dphistar1 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 0.8, bSign);
2321 Float_t dphistar2 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 2.5, bSign);
2323 const Float_t kLimit = twoTrackEfficiencyCutValue * 3;
2325 //Float_t dphistarminabs = 1e5;
2326 //Float_t dphistarmin = 1e5;
2328 if (TMath::Abs(dphistar1) < kLimit || TMath::Abs(dphistar2) < kLimit || dphistar1 * dphistar2 < 0){
2330 kRadiousDphiStarMax = 0;
2331 //kDphiStarMean = 0;
2334 for (Double_t rad=0.8; rad<2.51; rad+=0.01){
2336 if ( TMath::Abs(0.075 * rad / pt2)>1 ) break;
2338 Float_t dphistar = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, rad, bSign);
2339 Float_t dphistarabs = TMath::Abs(dphistar);
2341 if( ( (dphistarabs*rad) > kRadiousDphiStarMax) && ( TMath::Abs(deta) < twoTrackEfficiencyCutValue ) ){
2342 kRadiousDphiStarMax = dphistarabs*rad;
2345 //kDphiStarMean += dphistarabs;
2350 //kDphiStarMean = kDphiStarMean/i;
2351 /*if (TMath::Abs(deta) < twoTrackEfficiencyCutValue && kDphiStarMean < twoTrackEfficiencyCutValue ){
2355 } // End selection in dphistar
2360 return kRadiousDphiStarMax;
2364 //___________________________________________________________________________________________
2366 static Bool_t GoodTPCSharedMap(const AliAODTrack *track)
2368 // Rejects tracks with shared clusters after filling a control histogram
2369 // This overload is used for primaries
2371 // Get the shared maps
2372 const TBits sharedMap = track->GetTPCSharedMap();
2373 // Fill a control histogram
2374 //fPriHistShare->Fill(sharedMap.CountBits());
2375 // Reject shared clusters
2376 if((sharedMap.CountBits()) >= 1){
2377 // Bad track, has too many shared clusters!
2383 //___________________________________________________________________________________________
2385 static Float_t GetFractionTPCSharedCls(const AliAODTrack *track)
2387 // Rejects tracks with shared clusters after filling a control histogram
2388 // This overload is used for primaries
2390 // Get the shared maps
2391 const TBits sharedMap = track->GetTPCSharedMap();
2393 return 1.*sharedMap.CountBits()/track->GetTPCNclsF();
2397 //___________________________________________________________________________________________
2399 Double_t AliAnalysisTaskLambdaOverK0sJets::ThetaS(TString part)
2401 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2402 // private communication with Hans Beck
2404 // Returns the longitudinal angle of the particles propagated
2405 // position at R=1.25m. See
2406 // https://edms.cern.ch/file/406391/2/ALICE-INT-2003-038.pdf
2407 // for the ALICE coordinate system. Theta is zero at positive z,
2408 // pi/2 at z = 0 aka the xy plane and pi at negative z
2416 // Let's compute θ' and θ = π/2 - θ'
2417 // where θ' can even be and should
2418 // sometimes be negative
2420 // θ' = arctan(z/R)
2422 // = π/2 - arctan(z/R)
2423 // Note that in the doc above theta
2424 // is calculated as arccos(z/sqrt(x^2+y^2+z^2))
2426 // Array of positions is 85,105,125,..cm,
2427 // we take the z position at R=1.25m
2428 // return TMath::Pi()/2. - TMath::ATan(fXshifted[2][2]/125.);
2430 if( part.EqualTo("Trigger") )
2431 return TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/125.);
2432 else if( part.EqualTo("Daughter") )
2433 return TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/125.);
2436 Double_t thetaS = -100.;
2438 if( part.EqualTo("Trigger") )
2439 thetaS = TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/fTPCRadius);
2440 if( part.EqualTo("Daughter") )
2441 thetaS = TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/fTPCRadius);
2447 //___________________________________________________________________________________________
2449 Double_t AliAnalysisTaskLambdaOverK0sJets::EtaS(TString part)
2451 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2452 // private communication with Hans Beck
2454 // Returns the corresponding eta of a pri. part.
2455 // with this particles pos at R=1.25m
2457 // http://en.wikipedia.org/wiki/Pseudorapidity
2458 // η = -ln[ tan(θ/2)]
2459 // printf("z: %+04.0f, thetaS %+03.2f etaS %+1.2f\n"
2460 // ,fXshifted[2][2],ThetaS(),-TMath::Log( TMath::Tan(ThetaS()/2.) ));
2462 return -TMath::Log( TMath::Tan(ThetaS(part)/2.) );
2465 //___________________________________________________________________________________________
2467 Float_t AliAnalysisTaskLambdaOverK0sJets::dEtaS()
2469 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2470 // private communication with Hans Beck
2472 // Returns the pseudorapidity star difference
2474 // It is important to keep the calculations easy and separated.
2475 // The calculation of EtaS is straight forward, one just has to
2476 // do it step by step to not get confused.
2477 return EtaS("Trigger") - EtaS("Daughter");
2480 //___________________________________________________________________________________________
2482 Float_t AliAnalysisTaskLambdaOverK0sJets::dPhiSAtR125()
2484 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2485 // private communication with Hans Beck
2487 // returns delta phi star at R=1.2m
2488 // position at R=1.2m is stored as second radius
2489 // const Float_t distSft= TMath::Sqrt(TMath::Power(track1.fXshifted[2][0] - track2.fXshifted[2][0],2)
2490 // +TMath::Power(track1.fXshifted[2][1] - track2.fXshifted[2][1],2));
2491 const Float_t distSft= TMath::Sqrt( TMath::Power(fTrigSftR125[0] - fDaugSftR125[0],2) +
2492 TMath::Power(fTrigSftR125[1] - fDaugSftR125[1],2) );
2493 //return 2.0 * TMath::ATan(distSft/2./(125.));
2494 return 2.0 * TMath::ATan(distSft/2./(fTPCRadius));
2498 //___________________________________________________________________________________________
2500 void AliAnalysisTaskLambdaOverK0sJets::SetSftPosR125(const AliAODTrack *track,const Float_t bfield,const Float_t priVtx[3], TString part)
2502 // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
2503 // private communication with Hans Beck
2505 // Sets the spatial position of the track at the radius R=1.25m in the shifted coordinate system
2507 // Initialize the array to something indicating there was no propagation
2508 if(part.EqualTo("Trigger")){
2509 fTrigSftR125[0] = -9999.;
2510 fTrigSftR125[1] = -9999.;
2511 fTrigSftR125[2] = -9999.;
2513 if(part.EqualTo("Daughter")){
2514 fDaugSftR125[0] = -9999.;
2515 fDaugSftR125[1] = -9999.;
2516 fDaugSftR125[2] = -9999.;
2519 // Make a copy of the track to not change parameters of the track
2520 AliExternalTrackParam etp;
2521 etp.CopyFromVTrack(track);
2523 // The global position of the the track
2524 Double_t xyz[3]={-9999.,-9999.,-9999.};
2526 // The radius we want to propagate to, squared
2527 //const Float_t RSquaredWanted(125.*125.);
2528 const Float_t RSquaredWanted(fTPCRadius*fTPCRadius);
2530 // Propagation is done in local x of the track
2531 for (Float_t x = 58.; x < 247.; x+=1.){
2532 // Starts at 83 / Sqrt(2) and goes outwards. 85/Sqrt(2) is the smallest local x
2533 // for global radius 85 cm. x = 245 is the outer radial limit of the TPC when
2534 // the track is straight, i.e. has inifinite pt and doesn't get bent.
2535 // If the track's momentum is smaller than infinite, it will develop a y-component,
2536 // which adds to the global radius
2537 // We don't change the propagation steps to not mess up things!
2539 // Stop if the propagation was not succesful. This can happen for low pt tracks
2540 // that don't reach outer radii
2541 if(!etp.PropagateTo(x,bfield)) break;
2542 etp.GetXYZ(xyz); // GetXYZ returns global coordinates
2544 // Calculate the shifted radius we are at, squared.
2545 // Compare squared radii for faster code
2546 Float_t shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
2547 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
2549 // Roughly reached the radius we want
2550 if(shiftedRadiusSquared > RSquaredWanted){
2552 // Bigger loop has bad precision, we're nearly one centimeter too far,
2553 // go back in small steps.
2554 while (shiftedRadiusSquared>RSquaredWanted){
2555 // Propagate a mm inwards
2557 if(!etp.PropagateTo(x,bfield)){
2558 // Propagation failed but we're already with a
2559 // cm precision at R=1.25m so we only break the
2563 // Get the global position
2565 // Calculate shifted radius, squared
2566 shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
2567 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
2570 // We reached R=1.25m with a precission of a cm to a mm,
2571 // set the spatial position
2572 if(part.EqualTo("Trigger")){
2573 fTrigSftR125[0] = xyz[0] - priVtx[0];
2574 fTrigSftR125[1] = xyz[1] - priVtx[1];
2575 fTrigSftR125[2] = xyz[2] - priVtx[2];
2578 << xyz[0] << " " << xyz[1] << " " << xyz[2] << endl;
2579 cout << fTrigSftR125[0] << " " << fTrigSftR125[1] << " " <<fTrigSftR125[2] << endl;*/
2581 if(part.EqualTo("Daughter")){
2582 fDaugSftR125[0] = xyz[0] - priVtx[0];
2583 fDaugSftR125[1] = xyz[1] - priVtx[1];
2584 fDaugSftR125[2] = xyz[2] - priVtx[2];
2587 << xyz[0] << " " << xyz[1] << " " << xyz[2] << endl
2588 << fDaugSftR125[0] << " " << fDaugSftR125[1] << " " <<fDaugSftR125[2] << endl;*/
2594 } // End of if roughly reached radius
2596 } // End of coarse propagation loop
2600 //___________________________________________________________________________________________
2602 void AliAnalysisTaskLambdaOverK0sJets::RecCascade(const AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
2604 // Local method to reconstruct cascades candidates from the combinations of three tracks
2605 // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
2606 // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
2607 // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
2609 Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
2610 Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.;
2611 Float_t pLambda[3] = {0.,0.,0.};
2612 Float_t pCascade[3] = {0.,0.,0.};
2613 Float_t lMassCascade = 0., lPtot2Cascade=0.;
2615 // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
2616 for(Int_t i=0;i<2;i++){
2618 // 0. Check the charge for both tracks: trk1 & trk2.
2619 // Usefull in the Lambda step.
2620 if( trk1->Charge() == trk2->Charge() )
2623 // 1. Bachelor: Allocation for the track
2625 lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
2626 else if(i==1) //Omega
2627 lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
2629 lPtot2Bach = TMath::Power(trkBch->P(),2);
2631 lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
2633 // 2. Lambda: Kinematical properties
2634 lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
2636 pLambda[0] = trk1->Px() + trk2->Px();
2637 pLambda[1] = trk1->Py() + trk2->Py();
2638 pLambda[2] = trk1->Pz() + trk2->Pz();
2640 lPtot2Lambda = pLambda[0]*pLambda[0] + pLambda[1]*pLambda[1] + pLambda[2]*pLambda[2];
2642 lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
2644 // 3. Cascade: Reconstruction
2645 pCascade[0] = pLambda[0] + trkBch->Px();
2646 pCascade[1] = pLambda[1] + trkBch->Py();
2647 pCascade[2] = pLambda[2] + trkBch->Pz();
2649 lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
2651 lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
2653 // 4. Filling histograms
2654 if( histo.Contains("K0s") ) {
2656 fV0MassCascade->Fill(lMassCascade,1);
2657 else if(i==1) //Omega
2658 fV0MassCascade->Fill(lMassCascade,3);
2660 else if( histo.Contains("AntiLambda") ) {
2662 fV0MassCascade->Fill(lMassCascade,9);
2663 else if(i==1) //Omega
2664 fV0MassCascade->Fill(lMassCascade,11);
2666 else if( histo.Contains("Lambda") ) {
2668 fV0MassCascade->Fill(lMassCascade,5);
2669 else if(i==1) //Omega
2670 fV0MassCascade->Fill(lMassCascade,7);
2677 //___________________________________________________________________________________________
2679 void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig)
2681 // Three options for the 'step' variable:
2683 // 2) Reconstruction
2685 const AliAODTrack *trkTrig = 0x0;
2686 Float_t ptTrig = -100.;
2687 Float_t phiTrig = -100.;
2688 Float_t etaTrig = -100.;
2691 if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
2692 trkTrig = (AliAODTrack*)fAOD->GetTrack(idTrig);
2693 ptTrig = trkTrig->Pt();
2694 phiTrig = trkTrig->Phi();
2695 etaTrig = trkTrig->Eta();
2696 trkTrig->GetPxPyPz(pTrig);
2699 // *************************************************
2700 // Centrality selection
2701 AliCentrality *cent = fAOD->GetCentrality();
2702 Float_t centrality = cent->GetCentralityPercentile("V0M");
2703 Int_t curCentBin = CentBin(centrality);
2705 // *************************************************
2707 TClonesArray *stackMC = 0x0;
2708 Float_t mcXv=0., mcYv=0., mcZv=0.;
2711 TList *lst = fAOD->GetList();
2712 stackMC = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
2714 Printf("ERROR: stack not available");
2717 AliAODMCHeader *mcHdr =
2718 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
2720 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
2723 // *************************************************
2725 const AliAODVertex *vtx=fAOD->GetPrimaryVertex();
2726 Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
2727 Int_t nV0sTot = fAOD->GetNumberOfV0s();
2729 for (Int_t iV0 = 0; iV0 < nV0sTot; iV0++) {
2731 AliAODv0 *v0=fAOD->GetV0(iV0);
2733 if (!AcceptV0(fAOD->GetPrimaryVertex(),v0)) continue;
2735 const AliAODTrack *ntrack=(AliAODTrack *)v0->GetDaughter(1);
2736 const AliAODTrack *ptrack=(AliAODTrack *)v0->GetDaughter(0);
2739 Double_t xyz[3]; v0->GetSecondaryVtx(xyz);
2740 Float_t dx=xyz[0]-xv, dy=xyz[1]-yv;//, dz=xyz[2]-zv;
2742 // Momentum: 2D & 3D
2743 Float_t pt=TMath::Sqrt(v0->Pt2V0());
2744 //Float_t p=v0->P();
2746 // Decay length: 2D & 3D
2747 Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
2748 //Float_t dl=TMath::Sqrt(dx*dx + dy*dy + dz*dz);
2750 Float_t dlK = 0.4977*lt/pt;
2751 Float_t dlL = 1.1157*lt/pt;
2753 Float_t dlK = v0->MassK0Short()*dl/p;
2754 Float_t dlL = v0->MassLambda()*dl/p;
2755 Float_t dlAL = v0->MassAntiLambda()*dl/p;
2759 Bool_t ctK=kTRUE; if (dlK > fMaxCtau*2.68 || dlK < fMinCtau*2.68) ctK=kFALSE;
2760 Bool_t ctL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctL=kFALSE;
2761 Bool_t ctAL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctAL=kFALSE;
2763 // ---- Daughter tracks properties:
2765 Float_t lPtNeg = ntrack->Pt();
2766 Float_t lPtPos = ptrack->Pt();
2768 Double_t pNegDaug[3]; ntrack->GetPxPyPz(pNegDaug);
2769 Double_t pPosDaug[3]; ptrack->GetPxPyPz(pPosDaug);
2771 Float_t phiNeg = ntrack->Phi();
2772 Float_t phiPos = ptrack->Phi();
2774 Float_t etaNeg = ntrack->Eta();
2775 Float_t etaPos = ptrack->Eta();
2776 // Number of TPC Clusters
2777 Float_t nClsTPCPos = ptrack->GetTPCClusterInfo(2,1);
2778 Float_t nClsTPCNeg = ntrack->GetTPCClusterInfo(2,1);
2779 // Number of clusters of ITS
2780 Double_t posITSNcls = ptrack->GetITSNcls();
2781 Double_t negITSNcls = ntrack->GetITSNcls();
2783 // ---- V0 candidate properties:
2784 // Armenteros variables:
2785 Float_t lAlphaV0 = v0->AlphaV0();
2786 Float_t lPtArmV0 = v0->PtArmV0();
2787 // dca to primary vertex
2788 Float_t dcaNeg = v0->DcaNegToPrimVertex();
2789 Float_t dcaPos = v0->DcaPosToPrimVertex();
2790 // dca between daughters
2791 Float_t dca = v0->DcaV0Daughters();
2793 Float_t cpa = v0->CosPointingAngle(fAOD->GetPrimaryVertex());
2795 Float_t lEta = v0->PseudoRapV0();
2797 Float_t lPhi = v0->Phi();
2798 //lPhi = ( (lPhi < 0) ? lPhi + 2*TMath::Pi() : lPhi );
2801 Float_t rapK0s = v0->RapK0Short();
2802 Float_t rapLambda = v0->RapLambda();
2809 // **********************************
2811 Float_t pPos = -100.;
2812 Float_t pNeg = -100.;
2814 //Float_t dedxPos = -1000.;
2815 //Float_t dedxNeg = -1000.;
2816 //Float_t nsigPosPion = 0.;
2817 //Float_t nsigNegPion = 0.;
2818 Float_t nsigPosProton = 0.;
2819 Float_t nsigNegProton = 0.;
2821 if(fUsePID && !fIsMC) {
2822 const AliAODPid *pidNeg = ntrack->GetDetPid();
2823 const AliAODPid *pidPos = ptrack->GetDetPid();
2825 if (pidNeg && pidPos) {
2826 pPos = pidPos->GetTPCmomentum();
2827 pNeg = pidNeg->GetTPCmomentum();
2828 //dedxPos = pidPos->GetTPCsignal()/47.;
2829 //dedxNeg = pidNeg->GetTPCsignal()/47.;
2833 //nsigPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
2834 nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
2837 //nsigNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
2838 nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
2845 // **********************************
2846 // Disentangle the V0 candidate
2847 Float_t massK0s = 0., mK0s = 0., sK0s = 0.;
2848 Float_t massLambda = 0., mLambda = 0., sL = 0.;
2849 Float_t massAntiLambda = 0., sAL = 0.;
2851 Bool_t isCandidate2K0s = kFALSE;
2852 massK0s = v0->MassK0Short();
2853 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
2854 if( fCollision.Contains("PbPb2010") )
2855 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
2856 else if( fCollision.Contains("PbPb2011") )
2857 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
2858 if ( TMath::Abs(mK0s-massK0s) < 3*sK0s ) isCandidate2K0s = kTRUE;
2860 Bool_t isCandidate2Lambda = kFALSE;
2861 massLambda = v0->MassLambda();
2862 mLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
2863 if( fCollision.Contains("PbPb2010") )
2864 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
2865 else if( fCollision.Contains("PbPb2011") )
2866 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
2867 if (TMath::Abs(mLambda-massLambda) < 3*sL) isCandidate2Lambda = kTRUE;
2869 Bool_t isCandidate2LambdaBar = kFALSE;
2870 massAntiLambda = v0->MassAntiLambda();
2871 if( fCollision.Contains("PbPb2010") )
2872 sAL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
2873 else if( fCollision.Contains("PbPb2011") )
2874 sAL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
2875 if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) isCandidate2LambdaBar = kTRUE;
2877 // **********************************
2879 Bool_t lComeFromSigma = kTRUE;
2880 Bool_t lCheckMcK0Short = kTRUE;
2881 Bool_t lCheckMcLambda = kTRUE;
2882 Bool_t lCheckMcAntiLambda = kTRUE;
2883 Bool_t lComeFromXi = kTRUE;
2885 Int_t lMCAssocNegDaug = -100;
2886 Int_t lMCAssocPosDaug = -100;
2888 // ********* MC - Association *********
2889 // In case of injected-MC, the correlations might be done with only natural particles
2890 Bool_t isNaturalPart = kTRUE;
2891 if(step==kReconstruction){
2894 if(!stackMC) goto noas;
2896 isNaturalPart = kFALSE;
2898 lComeFromSigma = kFALSE;
2899 lCheckMcK0Short = kFALSE;
2900 lCheckMcLambda = kFALSE;
2901 lCheckMcAntiLambda = kFALSE;
2902 lComeFromXi = kFALSE;
2904 Int_t ntrkMC=stackMC->GetEntriesFast();
2906 Int_t nlab = TMath::Abs(ntrack->GetLabel());//** UInt_t
2907 Int_t plab = TMath::Abs(ptrack->GetLabel());
2909 // To avoid futher problems
2910 if ( (nlab<0 || plab<0) ||
2911 (nlab>=ntrkMC || plab>=ntrkMC) )
2914 AliAODMCParticle *nPart=(AliAODMCParticle*)stackMC->UncheckedAt(nlab);
2915 AliAODMCParticle *pPart=(AliAODMCParticle*)stackMC->UncheckedAt(plab);
2917 if(!nPart || !pPart) goto noas;
2919 // MC origin of daughters: Primaries?
2920 if( nPart->IsPhysicalPrimary() ) lMCAssocNegDaug = 1;
2921 if( pPart->IsPhysicalPrimary() ) lMCAssocPosDaug = 1;
2924 if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
2925 TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
2929 // Daughter momentum cut
2930 if ( ( nPart->Pt() < fMinPtDaughter ) ||
2931 ( pPart->Pt() < fMinPtDaughter ) )
2935 // ----------------------------------------
2937 Int_t lPDGCodeNegDaughter = nPart->GetPdgCode();
2938 Int_t lPDGCodePosDaughter = pPart->GetPdgCode();
2940 Int_t ipMother = pPart->GetMother();
2941 Int_t inMother = nPart->GetMother();
2943 if(inMother<0 || inMother>=ntrkMC) lMCAssocNegDaug = 6;
2944 if(ipMother<0 || ipMother>=ntrkMC) lMCAssocPosDaug = 6;
2946 if(inMother<0 || inMother>=ntrkMC) { goto noas;}
2947 if(inMother != ipMother) { // did the negative daughter decay ?
2948 AliAODMCParticle *negMotherOfMotherPart = (AliAODMCParticle*)stackMC->UncheckedAt(inMother);
2949 if (negMotherOfMotherPart->GetMother() != ipMother)
2953 if (ipMother<0 || ipMother>=ntrkMC)
2956 AliAODMCParticle *p0=(AliAODMCParticle*)stackMC->UncheckedAt(ipMother);
2960 // ----------------------------------------
2962 if ( (ipMother>=fEndOfHijingEvent) &&
2963 (fEndOfHijingEvent!=-1) &&
2964 (p0->GetMother()<0) )
2965 isNaturalPart = kFALSE;
2966 else isNaturalPart = kTRUE;
2968 // ----------------------------------------
2970 if(fSeparateInjPart && !isNaturalPart) goto noas;
2972 Int_t lPDGCodeV0 = p0->GetPdgCode();
2974 // MC origin of daughters:
2975 //Decay from Weak Decay?
2976 if( (TMath::Abs(lPDGCodeV0) == kK0Short) || (TMath::Abs(lPDGCodeV0) == kLambda0) ||
2977 (TMath::Abs(lPDGCodeV0) == kSigmaMinus) || (TMath::Abs(lPDGCodeV0) == kSigmaPlus) ||
2978 (TMath::Abs(lPDGCodeV0) == kSigma0) )
2979 { lMCAssocNegDaug = 2; lMCAssocPosDaug = 2; }
2980 // Cascade Gamma conversion
2981 if( (TMath::Abs(lPDGCodeV0) == kXiMinus) ||
2982 (TMath::Abs(lPDGCodeV0) == kOmegaMinus) )
2983 { lMCAssocNegDaug = 3; lMCAssocPosDaug = 3; }
2985 else if( TMath::Abs(lPDGCodeV0) == kGamma )
2986 { lMCAssocNegDaug = 4; lMCAssocPosDaug = 4; }
2987 // Unidentied mother:
2989 { lMCAssocNegDaug = 5; lMCAssocPosDaug = 5; }
2992 Int_t lIndexMotherOfMother = p0->GetMother();
2993 Int_t lPdgcodeMotherOfMother = 0;
2994 if (lIndexMotherOfMother != -1) {
2995 AliAODMCParticle *lMCAODMotherOfMother=(AliAODMCParticle*)stackMC->UncheckedAt(lIndexMotherOfMother);
2996 if (lMCAODMotherOfMother) {lPdgcodeMotherOfMother = lMCAODMotherOfMother->GetPdgCode();}
3000 // Daughter momentum cut: ! FIX it in case of AOD ! //MC or REc
3001 if ( (nPart->Pt() < fMinPtDaughter ) ||
3002 (pPart->Pt() < fMinPtDaughter ) )
3006 if( (lPDGCodeV0 != kK0Short) &&
3007 (lPDGCodeV0 != kLambda0) &&
3008 (lPDGCodeV0 != kLambda0Bar) )
3012 // ----------------------------------------
3015 if( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) &&
3016 (inMother==ipMother) && (lPDGCodeV0==310) ) {
3018 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
3019 lCheckMcK0Short = kTRUE;
3023 else if( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) &&
3024 (inMother==ipMother) && (lPDGCodeV0==3122) ){
3026 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
3027 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
3028 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
3029 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
3030 ) lComeFromSigma = kTRUE;
3031 else lComeFromSigma = kFALSE;
3033 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
3034 ( !(((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
3035 && (lComeFromSigma==kTRUE) )
3036 ) lCheckMcLambda = kTRUE;
3039 if ( TMath::Abs(lPdgcodeMotherOfMother) == 3312)
3040 lComeFromXi = kTRUE;
3044 else if( (lPDGCodePosDaughter==211) && (lPDGCodeNegDaughter==-2212) &&
3045 (inMother==ipMother) && (lPDGCodeV0==-3122) ) {
3048 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
3049 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
3050 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
3051 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
3052 ) lComeFromSigma = kTRUE;
3053 else lComeFromSigma = kFALSE;
3055 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
3056 ( (!((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary())
3057 && (lComeFromSigma==kTRUE) )
3058 ) lCheckMcAntiLambda = kTRUE;
3060 if ( TMath::Abs(lPdgcodeMotherOfMother) == 3312 || TMath::Abs(lPdgcodeMotherOfMother) == 3322 )
3061 lComeFromXi = kTRUE;
3065 // ----------------------------------------
3067 if ((p0->Pt())<pMin) goto noas;
3068 if (TMath::Abs(p0->Y())>fYMax ) goto noas;
3070 Float_t dxAs = mcXv - p0->Xv(), dyAs = mcYv - p0->Yv(), dzAs = mcZv - p0->Zv();
3071 Float_t l = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs + dzAs*dzAs);
3073 dxAs = mcXv - pPart->Xv(); dyAs = mcYv - pPart->Yv();
3074 //Float_t ltAs = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs);
3075 Float_t ptAs = p0->Pt();
3076 Float_t rapAs = p0->Y();
3077 Float_t etaAs = p0->Eta();
3083 // phi resolution for V0-reconstruction and daughter tracks
3084 Float_t resEta = p0->Eta() - v0->Eta();
3085 Float_t resPhi = p0->Phi() - v0->Phi();
3086 Float_t resPt = p0->Pt() - v0->Pt();
3088 Float_t resEtaPosDaug = pPart->Eta() - ptrack->Eta();
3089 Float_t resPhiPosDaug = pPart->Phi() - ptrack->Phi();
3090 Float_t resPtPosDaug = pPart->Pt() - ptrack->Pt();
3092 Float_t resEtaNegDaug = nPart->Eta() - ntrack->Eta();
3093 Float_t resPhiNegDaug = nPart->Phi() - ntrack->Phi();
3094 Float_t resPtNegDaug = nPart->Pt() - ntrack->Pt();
3096 if ( (l < 0.01) && (ptAs<10.) ) { // Primary V0
3099 if(ctK && lCheckMcK0Short){
3101 // Natural particles
3104 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3106 fK0sAssocPt->Fill(ptAs);
3107 fK0sAssocPtRap->Fill(ptAs,rapAs,centrality);
3108 fK0sAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
3110 // Armenteros Pod. and rapidity cut
3111 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
3113 Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
3114 Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
3115 Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
3116 Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
3118 // Distributions for the efficiency (systematics chechks)
3119 fK0sAssocPtMassArm[curCentBin]->Fill(effK0sArm);
3120 fK0sAssocMassPtVtx[curCentBin]->Fill(effK0sVtx);
3121 fK0sAssocMassPtDCADaug[curCentBin]->Fill(effK0sDCA);
3122 fK0sAssocMassPtCPA[curCentBin]->Fill(effK0sCPA);
3125 fK0sMCResEta->Fill(resEta,pt,centrality);
3126 fK0sMCResPhi->Fill(resPhi,pt,centrality);
3127 fK0sMCResPt->Fill(resPt,pt,centrality);
3129 fK0sPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
3130 fK0sPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
3131 fK0sPosMCResPt->Fill(resPtPosDaug,pt,centrality);
3133 fK0sNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
3134 fK0sNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
3135 fK0sNegMCResPt->Fill(resPtNegDaug,pt,centrality);
3137 } // End selection in the dca to prim. vtx and the number of clusters
3139 // Distributions for the efficiency (Systematic checks)
3140 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
3142 // Cut in the DCA ToPrim Vtx
3143 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3145 Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
3146 fK0sAssocMassPtDCAPV[curCentBin]->Fill(effK0sdcaPV);
3149 // cut in the number of tpc clusters
3150 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
3152 Double_t effK0sTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3153 fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(effK0sTPCcls);
3157 } // End selection for systematics
3159 } // End natural particle selection
3160 // Embeded particles
3163 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3165 fK0sAssocPtRapEmbeded->Fill(ptAs,rapAs,centrality);
3167 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0)) && TMath::Abs(rapAs)<fYMax ){
3169 Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
3170 Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
3171 Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
3172 Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
3174 // Distributions for the efficiency (systematics chechks)
3175 fK0sAssocPtMassArmEmbeded[curCentBin]->Fill(effK0sArm);
3176 fK0sAssocMassPtVtxEmbeded[curCentBin]->Fill(effK0sVtx);
3177 fK0sAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effK0sDCA);
3178 fK0sAssocMassPtCPAEmbeded[curCentBin]->Fill(effK0sCPA);
3181 } // End selection in the dca to prim. vtx and the number of clusters
3183 // Distributions for the efficiency (Systematic checks)
3184 if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
3186 // Cut in the DCA ToPrim Vtx
3187 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3189 Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
3190 fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effK0sdcaPV);
3193 // cut in the number of tpc clusters
3194 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
3196 Double_t effK0sTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3197 fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effK0sTPCcls);
3200 } // End selection for systematics
3202 } // End embeded particle selection
3204 } // End K0s selection
3207 if(ctL && lCheckMcLambda && (TMath::Abs(nsigPosProton)<fNSigma) ) {
3209 // Natural particles
3212 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3214 fLambdaAssocPt->Fill(ptAs);
3215 fLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
3216 fLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
3219 if(TMath::Abs(rapAs)<fYMax) {
3221 Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
3222 Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
3223 Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
3224 Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
3226 // Distributions for the efficiency (systematics chechks)
3227 fLambdaAssocMassPtRap[curCentBin]->Fill(effLambda);
3228 fLambdaAssocMassPtVtx[curCentBin]->Fill(effLambdaVtx);
3229 fLambdaAssocMassPtDCADaug[curCentBin]->Fill(effLambdaDCA);
3230 fLambdaAssocMassPtCPA[curCentBin]->Fill(effLambdaCPA);
3232 if( !isCandidate2K0s && !isCandidate2LambdaBar)
3233 fLambdaAssocMassPtRap2[curCentBin]->Fill(effLambda);
3237 fLambdaMCResEta->Fill(resEta,pt,centrality);
3238 fLambdaMCResPhi->Fill(resPhi,pt,centrality);
3239 fLambdaMCResPt->Fill(resPt,pt,centrality);
3241 fLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
3242 fLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
3243 fLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
3245 fLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
3246 fLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
3247 fLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
3249 } // End selection in the dca to prim. vtx and the number of clusters
3251 // Distributions for the efficiency (Systematic checks)
3252 if( TMath::Abs(rapAs)<fYMax ){
3254 // Cut in the DCA ToPrim Vtx
3255 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3257 Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3258 fLambdaAssocMassPtDCAPV[curCentBin]->Fill(effLambdadcaPV);
3261 // cut in the number of tpc clusters
3262 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
3264 Double_t effLambdaTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3265 fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effLambdaTPCcls);
3268 } // End selection for systematics
3270 } // End natural particle selection
3271 // Embeded particles
3274 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3276 if( TMath::Abs(rapAs)<fYMax ){
3278 Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
3279 Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
3280 Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
3281 Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
3283 // Distributions for the efficiency (systematics chechks)
3284 fLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effLambda);
3285 fLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effLambdaVtx);
3286 fLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effLambdaDCA);
3287 fLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effLambdaCPA);
3289 if( !isCandidate2K0s && !isCandidate2LambdaBar)
3290 fLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effLambda);
3293 } // End selection in the dca to prim. vtx and the number of clusters
3295 // Distributions for the efficiency (Systematic checks)
3296 if( TMath::Abs(rapAs)<fYMax ){
3298 // Cut in the DCA ToPrim Vtx
3299 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3300 Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3301 fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effLambdadcaPV);
3304 // cut in the number of tpc clusters
3305 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
3306 Double_t effLambdaTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3307 fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effLambdaTPCcls);
3310 } // End selection for systematics
3312 } // End embeded particle selection
3314 } // End Lambda selection
3317 if (ctAL && lCheckMcAntiLambda && (TMath::Abs(nsigNegProton)<fNSigma) ){
3321 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3323 fAntiLambdaAssocPt->Fill(ptAs);
3324 fAntiLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
3325 fAntiLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
3328 if(TMath::Abs(rapAs)<fYMax) {
3330 Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
3331 Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
3332 Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
3333 Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
3335 // Distributions for the efficiency (systematics chechks)
3336 fAntiLambdaAssocMassPtRap[curCentBin]->Fill(effAntiLambda);
3337 fAntiLambdaAssocMassPtVtx[curCentBin]->Fill(effAntiLambdaVtx);
3338 fAntiLambdaAssocMassPtDCADaug[curCentBin]->Fill(effAntiLambdaDCA);
3339 fAntiLambdaAssocMassPtCPA[curCentBin]->Fill(effAntiLambdaCPA);
3341 if( !isCandidate2K0s && !isCandidate2Lambda )
3342 fAntiLambdaAssocMassPtRap2[curCentBin]->Fill(effAntiLambda);
3345 fAntiLambdaMCResEta->Fill(resEta,pt,centrality);
3346 fAntiLambdaMCResPhi->Fill(resPhi,pt,centrality);
3347 fAntiLambdaMCResPt->Fill(resPt,pt,centrality);
3349 fAntiLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
3350 fAntiLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
3351 fAntiLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
3353 fAntiLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
3354 fAntiLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
3355 fAntiLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
3357 } // End selection in the dca to prim. vtx and the number of clusters
3359 // Distributions for the efficiency (Systematic checks)
3360 if( TMath::Abs(rapAs)<fYMax ){
3362 // Cut in the DCA ToPrim Vtx
3363 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3365 Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3366 fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(effAntiLambdadcaPV);
3369 // cut in the number of tpc clusters
3370 if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
3371 Double_t effAntiLambdaTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3372 fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effAntiLambdaTPCcls);
3375 } // End selection for systematics
3377 } // End natural particle selection
3378 // Embeded particles
3381 if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3383 if( TMath::Abs(rapAs)<fYMax ){
3385 Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
3386 Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
3387 Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
3388 Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
3390 // Distributions for the efficiency (systematics chechks)
3391 fAntiLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effAntiLambda);
3392 fAntiLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effAntiLambdaVtx);
3393 fAntiLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effAntiLambdaDCA);
3394 fAntiLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effAntiLambdaCPA);
3396 if( !isCandidate2K0s && !isCandidate2Lambda )
3397 fAntiLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effAntiLambda);
3400 } // End selection in the dca to prim. vtx and the number of clusters
3403 // Distributions for the efficiency (Systematic checks)
3404 if( TMath::Abs(rapAs)<fYMax ){
3406 // Cut in the DCA ToPrim Vtx
3407 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3409 Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
3410 fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effAntiLambdadcaPV);
3413 // cut in the number of tpc ckusters
3414 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
3416 Double_t effAntiLambdaTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
3417 fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effAntiLambdaTPCcls);
3420 } // End selection for systematics
3422 } // End embeded particle selection
3426 if( lComeFromXi && isNaturalPart ){
3427 if(lPDGCodeV0==3122) { fLambdaAssocFromXi->Fill(ptAs,centrality); }
3428 else if(lPDGCodeV0==-3122) { fAntiLambdaAssocFromXi->Fill(ptAs,centrality); }
3431 } // End Primary V0 selection
3433 // After the kinematical selection of K0s and Lambdas
3434 // it might be that the daugthers are not identified through MC Association
3435 if(lMCAssocNegDaug==0)
3436 lMCAssocNegDaug = 6;
3437 if(lMCAssocPosDaug==0)
3438 lMCAssocPosDaug = 6;
3440 } // End MC-Association
3442 }// End Correlation Step
3444 // ************************************
3448 // Comparing the pt of the trigger particle wrt the v0-candidate's daughter:
3449 // It is used as well for the side-band subtraction
3450 Int_t isSameTrkPosDaug = -1;
3451 Int_t isSameTrkNegDaug = -1;
3452 if( step==kTriggerCheck ){
3453 isSameTrkPosDaug = SameTrack(trkTrig,ptrack);
3454 isSameTrkNegDaug = SameTrack(trkTrig,ntrack);
3457 // *******************
3459 // *******************
3460 if (ctK && (TMath::Abs(rapK0s)<fYMax) && ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && ( massK0s > 0.3979 && massK0s < 0.5981 ) ) {
3465 if (isCandidate2K0s && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3472 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1){
3473 Printf(" The LP has the same momentum in X and Y as one of the K0s daughters *** iV0 %d",iV0);
3475 if(fCheckIDTrig){ // Compare properties of daughters nad
3477 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
3479 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
3480 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
3481 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
3484 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 ",
3485 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
3486 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
3487 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
3488 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
3489 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
3493 // Positive daughter
3494 if( isSameTrkPosDaug==1 ){
3495 for(Int_t i=0;i<3;i++)
3496 fCheckIDTrigPtK0s->Fill(difPosP[i],i,pt);
3497 fCheckIDTrigPhiK0s->Fill(posDeltaPhi,0.,pt);
3498 fCheckIDTrigEtaK0s->Fill(posDeltaEta,0.,pt);
3499 fCheckIDTrigNclsK0s->Fill(nClsTPCPos,0.,pt);
3501 // Negative daughter
3502 if( isSameTrkNegDaug==1 ){
3503 for(Int_t i=0;i<3;i++)
3504 fCheckIDTrigPtK0s->Fill(difNegP[i],i+3,pt);
3505 fCheckIDTrigPhiK0s->Fill(negDeltaPhi,2.,pt);
3506 fCheckIDTrigEtaK0s->Fill(negDeltaEta,2.,pt);
3507 fCheckIDTrigNclsK0s->Fill(nClsTPCNeg,2.,pt);
3513 fTriggerParticles->RemoveAt(iArray);
3514 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
3517 } // Close isTrigFromV0daug
3519 }// End K0s Mass cut
3521 break; // End K0s selection for TriggerCheck
3522 case kReconstruction:
3524 if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
3526 if(isNaturalPart) fK0sMass->Fill(massK0s,pt,centrality);
3527 else fK0sMassEmbeded->Fill(massK0s,pt,centrality);
3529 fK0sMassPtEta->Fill(massK0s,pt,lEta);
3530 fK0sMassPtRap[curCentBin]->Fill(massK0s,pt,rapK0s);
3531 fK0sMassPtPhi->Fill(massK0s,pt,lPhi);
3534 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && !isNaturalPart )
3535 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 3) );
3540 if( fDoQA && lCheckMcK0Short && isNaturalPart && (pt<10.) ){ // Quality Assurance
3542 // Invariant Mass cut
3543 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
3545 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3546 fK0sDCAPosDaug->Fill(dcaPos,pt);
3547 fK0sDCANegDaug->Fill(dcaNeg,pt);
3550 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
3552 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC ) ){
3553 fK0sPtPosDaug->Fill(pt,lPtPos);
3554 fK0sPtNegDaug->Fill(pt,lPtNeg);
3556 fK0sPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3557 fK0sPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
3559 fK0sDecayPos->Fill(dx,dy,pt);
3560 fK0sDecayVertex->Fill(lt,pt);
3562 fK0sCPA->Fill(cpa,pt);
3563 fK0sDCAV0Daug->Fill(dca,pt);
3565 fK0sNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3566 fK0sNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3569 fK0sNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3570 fK0sNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3573 } // End selection in mass
3575 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
3576 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
3578 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3579 fK0sBckgDCAPosDaug->Fill(dcaPos,pt);
3580 fK0sBckgDCANegDaug->Fill(dcaNeg,pt);
3583 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
3585 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3586 fK0sBckgPtPosDaug->Fill(pt,lPtPos);
3587 fK0sBckgPtNegDaug->Fill(pt,lPtNeg);
3589 fK0sBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3590 fK0sBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
3592 fK0sBckgDecayPos->Fill(dx,dy,pt);
3593 fK0sBckgDecayVertex->Fill(lt,pt);
3595 fK0sBckgCPA->Fill(cpa,pt);
3596 fK0sBckgDCAV0Daug->Fill(dca,pt);
3598 fK0sBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3599 fK0sBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3602 fK0sBckgNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3603 fK0sBckgNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3607 }// End selection in outside the mass cut
3611 break; // End K0s selection for Corrleation
3613 Printf( " Selection of 'step' is not set properly");
3618 } // End K0s selection
3620 // *******************
3622 // *******************
3623 if ( ctL && (TMath::Abs(rapLambda)<fYMax) && (massLambda > 1.0649 && massLambda < 1.1651 ) && (TMath::Abs(nsigPosProton)<fNSigma) ){
3628 if (isCandidate2Lambda && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && !isCandidate2K0s && !isCandidate2LambdaBar ){
3635 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
3636 Printf(" The LP has the same momentum in X and Y as one of the Lambda daughters *** iV0 %d",iV0);
3638 if(fCheckIDTrig){ // Compare properties of daughters nad
3640 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
3642 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
3643 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
3644 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
3647 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 ",
3648 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
3649 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
3650 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
3651 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
3652 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
3656 // Positive daughter
3657 if( isSameTrkPosDaug==1 ){
3658 for(Int_t i=0;i<3;i++)
3659 fCheckIDTrigPtLambda->Fill(difPosP[i],i,pt);
3660 fCheckIDTrigPhiLambda->Fill(posDeltaPhi,0.,pt);
3661 fCheckIDTrigEtaLambda->Fill(posDeltaEta,0.,pt);
3662 fCheckIDTrigNclsLambda->Fill(nClsTPCPos,0.,pt);
3664 // Negative daughter
3665 if( isSameTrkNegDaug==1 ){
3666 for(Int_t i=0;i<3;i++)
3667 fCheckIDTrigPtLambda->Fill(difNegP[i],i+3,pt);
3668 fCheckIDTrigPhiLambda->Fill(negDeltaPhi,2.,pt);
3669 fCheckIDTrigEtaLambda->Fill(negDeltaEta,2.,pt);
3670 fCheckIDTrigNclsLambda->Fill(nClsTPCNeg,2.,pt);
3675 fTriggerParticles->RemoveAt(iArray);
3676 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
3678 } // Close isTrigFromV0daug
3680 } // End Lambda Mass cut
3681 break; // End Lambda selection for TriggerCheck
3682 case kReconstruction:
3684 if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
3686 if(isNaturalPart) fLambdaMass->Fill(massLambda,pt,centrality);
3687 else fLambdaMassEmbeded->Fill(massLambda,pt,centrality);
3689 if( !isCandidate2K0s && !isCandidate2LambdaBar){
3690 if(isNaturalPart) fLambdaMass2->Fill(massLambda,pt,centrality);
3691 else fLambdaMass2Embeded->Fill(massLambda,pt,centrality);
3694 fLambdaMassPtEta->Fill(massLambda,pt,lEta);
3695 fLambdaMassPtRap[curCentBin]->Fill(massLambda,pt,rapLambda);
3696 fLambdaMassPtPhi->Fill(massLambda,pt,lPhi);
3699 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && !isNaturalPart )
3700 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 4) );
3705 // Invariant Mass cut
3706 if(fDoQA && lCheckMcLambda && isNaturalPart && (pt<10.)){ // Quality Assurance
3708 // Invariant Mass cut
3709 if (TMath::Abs(mLambda-massLambda) < 3*sL) {
3711 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3712 fLambdaDCAPosDaug->Fill(dcaPos,pt);
3713 fLambdaDCANegDaug->Fill(dcaNeg,pt);
3716 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
3718 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3719 fLambdaPtPosDaug->Fill(pt,lPtPos);
3720 fLambdaPtNegDaug->Fill(pt,lPtNeg);
3722 fLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3723 fLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
3725 fLambdaDecayPos->Fill(dx,dy,pt);
3726 fLambdaDecayVertex->Fill(lt,pt);
3728 fLambdaCPA->Fill(cpa,pt);
3729 fLambdaDCAV0Daug->Fill(dca,pt);
3731 fLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3732 fLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3735 fLambdaNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3736 fLambdaNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3740 } // End selection in mass
3742 if( (TMath::Abs(mLambda-massLambda + 6.5*sL) < 1.5*sL) ||
3743 (TMath::Abs(mLambda-massLambda - 6.5*sL) < 1.5*sL) ){
3745 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3746 fLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
3747 fLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
3750 if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
3752 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3753 fLambdaBckgPtPosDaug->Fill(pt,lPtPos);
3754 fLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
3756 fLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3757 fLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
3759 fLambdaBckgDecayPos->Fill(dx,dy,pt);
3760 fLambdaBckgDecayVertex->Fill(lt,pt);
3762 fLambdaBckgCPA->Fill(cpa,pt);
3763 fLambdaBckgDCAV0Daug->Fill(dca,pt);
3765 fLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3766 fLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3769 fLambdaBckgNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3770 fLambdaBckgNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3773 }// End selection in outside the mass cut
3777 break; // End Lambda selection for Correlation
3779 Printf(" Selection of 'step' is not set properly");
3784 } // End Lambda selection
3786 // *******************
3787 // AntiLambda selection
3788 // *******************
3789 if ( ctAL && (TMath::Abs(rapLambda)<fYMax) && (massAntiLambda > 1.0649 && massAntiLambda < 1.1651 ) && (TMath::Abs(nsigNegProton)<fNSigma) ) {
3794 if (isCandidate2LambdaBar && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && !isCandidate2K0s && !isCandidate2Lambda ){
3801 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
3802 Printf(" The LP has the same momentum in X and Y as one of the AntiLambda daughters *** iV0 %d",iV0);
3804 if(fCheckIDTrig){ // Compare properties of daughters nad
3806 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
3808 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
3809 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
3810 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
3813 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 ",
3814 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
3815 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
3816 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
3817 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
3818 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
3822 // Positive daughter
3823 if( isSameTrkPosDaug==1 ){
3824 for(Int_t i=0;i<3;i++)
3825 fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i,pt);
3826 fCheckIDTrigPhiAntiLambda->Fill(posDeltaPhi,0.,pt);
3827 fCheckIDTrigEtaAntiLambda->Fill(posDeltaEta,0.,pt);
3828 fCheckIDTrigNclsAntiLambda->Fill(nClsTPCPos,0.,pt);
3830 // Negative daughter
3831 if( isSameTrkNegDaug==1 ){
3832 for(Int_t i=0;i<3;i++)
3833 fCheckIDTrigPtAntiLambda->Fill(difNegP[i],i+3,pt);
3834 fCheckIDTrigPhiAntiLambda->Fill(negDeltaPhi,2.,pt);
3835 fCheckIDTrigEtaAntiLambda->Fill(negDeltaEta,2.,pt);
3836 fCheckIDTrigNclsAntiLambda->Fill(nClsTPCNeg,2.,pt);
3842 fTriggerParticles->RemoveAt(iArray);
3843 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
3845 }// Close isTrigFromV0daug
3847 }// End AntiLambda Mass cut
3848 break; // End AntiLambda selection for CheckTrigger
3849 case kReconstruction:
3851 if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ) {
3853 if(isNaturalPart) fAntiLambdaMass->Fill(massAntiLambda,pt,centrality);
3854 else fAntiLambdaMassEmbeded->Fill(massAntiLambda,pt,centrality);
3856 if( !isCandidate2K0s && !isCandidate2Lambda) {
3857 if(isNaturalPart) fAntiLambdaMass2->Fill(massAntiLambda,pt,centrality);
3858 else fAntiLambdaMass2Embeded->Fill(massAntiLambda,pt,centrality);
3861 fAntiLambdaMassPtEta->Fill(massAntiLambda,pt,lEta);
3862 fAntiLambdaMassPtRap[curCentBin]->Fill(massAntiLambda,pt,rapLambda);
3863 fAntiLambdaMassPtPhi->Fill(massAntiLambda,pt,lPhi);
3866 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && !isNaturalPart )
3867 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 5) );
3871 if( fDoQA && lCheckMcAntiLambda && isNaturalPart && (pt<10.) ){ // Quality Assurance
3873 // Invariant Mass cut
3874 if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) {
3876 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3877 fAntiLambdaDCAPosDaug->Fill(dcaPos,pt);
3878 fAntiLambdaDCANegDaug->Fill(dcaNeg,pt);
3881 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
3883 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3884 fAntiLambdaPtPosDaug->Fill(pt,lPtPos);
3885 fAntiLambdaPtNegDaug->Fill(pt,lPtNeg);
3887 fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3888 fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
3890 fAntiLambdaDecayPos->Fill(dx,dy,pt);
3891 fAntiLambdaDecayVertex->Fill(lt,pt);
3893 fAntiLambdaCPA->Fill(cpa,pt);
3894 fAntiLambdaDCAV0Daug->Fill(dca,pt);
3896 fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3897 fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3900 fAntiLambdaNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3901 fAntiLambdaNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3904 } // End selection in mass
3906 if( (TMath::Abs(mLambda-massAntiLambda + 6.5*sAL) < 1.5*sAL) ||
3907 (TMath::Abs(mLambda-massAntiLambda - 6.5*sAL) < 1.5*sAL) ){
3909 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3910 fAntiLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
3911 fAntiLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
3914 if( (dcaPos>0.1) && (dcaNeg>0.1) ){
3916 if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
3917 fAntiLambdaBckgPtPosDaug->Fill(pt,lPtPos);
3918 fAntiLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
3920 fAntiLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
3921 fAntiLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
3923 fAntiLambdaBckgDecayPos->Fill(dx,dy,pt);
3924 fAntiLambdaBckgDecayVertex->Fill(lt,pt);
3926 fAntiLambdaBckgCPA->Fill(cpa,pt);
3927 fAntiLambdaBckgDCAV0Daug->Fill(dca,pt);
3929 fAntiLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
3930 fAntiLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
3933 fAntiLambdaBckgNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
3934 fAntiLambdaBckgNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
3938 }// End selection in outside the mass cut
3944 Printf( " Selection of 'step' is not set properly");
3948 } // End AntiLambda selection
3954 //___________________________________________________________________________________________
3956 void AliAnalysisTaskLambdaOverK0sJets::TriggerParticle()
3958 // Obtain the trigger particles of the event to perform the correlations in phi and eta
3960 // ----------------------------
3961 // 1. Trigger particles
3962 TClonesArray *stack = 0x0;
3964 TList *lst = fAOD->GetList();
3965 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
3967 Printf("ERROR: stack not available");
3972 Int_t nTrk= fAOD->GetNumberOfTracks();
3973 AliCentrality *cent = fAOD->GetCentrality();
3974 Float_t centrality = cent->GetCentralityPercentile("V0M");
3975 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
3976 Float_t zv=vtx->GetZ();
3977 Double_t pt = -1000.;
3978 Double_t eta = -1000.;
3979 Double_t phi = -1000.;
3980 Float_t resPt = -1000.;
3981 Float_t resEta = -1000.;
3982 Float_t resPhi = -1000.;
3984 for (Int_t i=0; i<nTrk; i++) {
3985 const AliAODTrack *t = fAOD->GetTrack(i);
3986 if(!AcceptTrack(t)) continue;
3990 if( (pt>fTrigPtMin) && (pt<fTrigPtMax) && (TMath::Abs(eta)<fTrigEtaMax) ) {
3993 fTriggerParticles->Add( new AliMiniParticle(centrality, zv, i, pt, phi, eta, 0, 0, 1) );
3996 Int_t lab = TMath::Abs(t->GetLabel());
3997 AliAODMCParticle *part=(AliAODMCParticle*)stack->UncheckedAt(lab);
3999 resPt = (part->Pt() - pt)/pt;
4000 resEta = part->Eta() - eta;
4001 resPhi = part->Phi() - phi;
4003 fTriggerMCResPt->Fill(resPt,pt,centrality);
4004 fTriggerMCResEta->Fill(resEta,pt,centrality);
4005 fTriggerMCResPhi->Fill(resPhi,pt,centrality);
4011 // ----------------------------
4012 // 2. Checking if the trigger particle
4013 // might be a daughter from the V0-candidate
4015 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
4016 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
4017 Int_t id = trig->ID();
4018 V0Loop(kTriggerCheck,kFALSE,i,id);
4024 //___________________________________________________________________________________________
4026 void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
4028 // Main loop for the Analysis
4030 // Initializing global variables for the correlation studies (mandatory for each event).
4031 // ---- 1) Trigger Particle: id track
4033 // ---- 2) TriggerCheck: Variables used to crosscheck if trigger particle is a V0 daughter ---- //
4038 // Getting AOD Event
4039 fAOD = (AliAODEvent *)InputEvent();
4040 fEvents->Fill(0); //event counter
4043 Printf("ERROR: aod not available");
4048 // Physics selection
4049 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4050 AliInputEventHandler *hdr=(AliInputEventHandler*)mgr->GetInputEventHandler();
4051 UInt_t maskIsSelected = hdr->IsEventSelected();
4052 Bool_t isSelected = kFALSE;
4054 Bool_t isSelectedCentral = kFALSE;
4055 Bool_t isSelectedSemiCentral = kFALSE;
4056 Bool_t isSelectedMB = kFALSE;
4057 if( fCollision.Contains("PbPb2010") )
4058 isSelected = (maskIsSelected & AliVEvent::kMB);
4059 else if( fCollision.Contains("PbPb2011") ){
4060 isSelectedCentral = maskIsSelected & AliVEvent::kCentral;
4061 isSelectedSemiCentral = maskIsSelected & AliVEvent::kSemiCentral;
4062 isSelectedMB = maskIsSelected & AliVEvent::kMB;
4063 if( isSelectedCentral || isSelectedSemiCentral || isSelectedMB ) isSelected = kTRUE;
4066 if(!isSelected) return;
4069 // Centrality selection
4070 AliCentrality *cent = fAOD->GetCentrality();
4071 Float_t centrality = cent->GetCentralityPercentile("V0M");
4072 fCentrality->Fill(centrality);
4074 if (!cent->IsEventInCentralityClass(fCentMin,fCentMax,"V0M")) return;
4077 // Global primary vertex
4078 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
4079 if (vtx->GetNContributors()<3) return;
4082 // SPD primary vertex
4083 const AliAODVertex *vtxSPD = fAOD->GetPrimaryVertexSPD();
4084 if (vtxSPD->GetNContributors()<3) return;
4087 // Correlaiton between global Zvtx and SPD Zvtx
4088 Float_t zv=vtx->GetZ(), zvSPD=vtxSPD->GetZ();
4089 fPrimayVtxGlobalvsSPD->Fill(zv,zvSPD);
4091 if( TMath::Abs( zv - zvSPD ) > 0.5) return;
4094 Float_t xv=vtx->GetX(), yv=vtx->GetY();
4095 const Float_t priVtx[3] = {xv,yv,zv};
4097 if (TMath::Abs(zv) > 10.) return;
4100 fPrimaryVertexX->Fill(xv);
4101 fPrimaryVertexY->Fill(yv);
4102 fPrimaryVertexZ->Fill(zv);
4104 fCentrality2->Fill(centrality);
4106 if(isSelectedCentral) fCentralityTrig->Fill(centrality,1);
4107 if(isSelectedSemiCentral) fCentralityTrig->Fill(centrality,2);
4108 if(isSelectedMB) fCentralityTrig->Fill(centrality,3);
4111 // Protect the code: only interested in events with centrality < 40%
4112 if(centrality>=40.) return;
4115 AliEventplane *EventPlane = InputEvent()->GetEventplane();
4116 Double_t eventPlane = EventPlane->GetEventplane("V0",InputEvent(),2);
4118 eventPlane = ( (eventPlane < 0) ? eventPlane + TMath::Pi() : eventPlane );
4119 eventPlane = ( ( eventPlane > TMath::Pi() ) ? eventPlane - TMath::Pi() : eventPlane );
4121 // Magnetic field sign
4122 const Float_t bSign = (fAOD->GetMagneticField() > 0) ? 1 : -1;
4124 // Getting PID Response
4125 fPIDResponse = hdr->GetPIDResponse();
4127 Int_t curVtxBin = VtxBin(zv);
4128 Int_t curCentBin = CentBin(centrality);
4130 // **********************************************
4131 // Triggered Particle - Trigger Particle
4132 fTriggerParticles = new TObjArray();
4133 fTriggerParticles->SetOwner(kTRUE);
4136 // V0-candidate is the highest particle in the event:
4137 if(fIsV0LP) { fEvents->Fill(8); fTriggerIsV0->Fill(fPtV0LP);}
4139 Int_t NtrigPerEvnt = 0;
4140 Float_t phi2 = -100.;
4141 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
4142 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
4144 if(trig->WhichCandidate()==0){
4145 fTriggerComingFromDaug->Fill(trig->Pt());
4146 fCheckTriggerFromV0Daug->Fill(1);
4147 if(fIsV0LP) fCheckTriggerFromV0Daug->Fill(2);
4149 else if( trig->WhichCandidate()==1){
4150 fCheckTriggerFromV0Daug->Fill(0);
4151 fTriggerPtCentCh->Fill(trig->Pt(),centrality,zv);
4153 phi2 = ( (trig->Phi() > TMath::Pi()) ? trig->Phi() - TMath::Pi() : trig->Phi() ) ;
4154 fTriggerEventPlane->Fill(phi2);
4162 if(NtrigPerEvnt>0) fEvents->Fill(11);
4163 else fEvents->Fill(12);
4165 fNTrigPerEvt->Fill(NtrigPerEvnt,centrality);
4167 // ******************************************
4168 // Start loop over MC particles
4169 fTriggerPartMC = new TObjArray();
4170 fTriggerPartMC->SetOwner(kTRUE);
4171 fAssocPartMC = new TObjArray();
4172 fAssocPartMC->SetOwner(kTRUE);
4174 fEndOfHijingEvent = -1;
4175 TClonesArray *stack = 0x0;
4176 Float_t mcXv=0., mcYv=0., mcZv=0.;
4180 TList *lst = fAOD->GetList();
4181 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
4183 Printf("ERROR: stack not available");
4187 AliAODMCHeader *mcHdr =
4188 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
4190 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
4192 Int_t nTrkMC = stack->GetEntriesFast();
4193 // -----------------------------------------
4194 // --------- Trigger particle --------------
4195 // -----------------------------------------
4196 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
4197 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
4200 // ----------------------------------------
4201 // For injected MC: it determines where HIJING event ends
4202 if (fEndOfHijingEvent==-1) {
4203 if ( ( p0->GetStatus() == 21 ) ||
4204 ( (p0->GetPdgCode() == 443) &&
4205 (p0->GetMother() == -1) &&
4206 (p0->GetDaughter(0) == (iTrkMC+1))) ) {
4207 fEndOfHijingEvent = iTrkMC;
4211 // ----------------------------------------
4212 Int_t isNaturalPart = 1;
4213 if ( (iTrkMC>=fEndOfHijingEvent) &&
4214 (fEndOfHijingEvent!=-1) &&
4215 (p0->GetMother()<0) )
4218 // ----------------------------------------
4219 if(p0->Charge()==0) continue;
4220 if(isNaturalPart == 0) continue;
4221 if( !p0->IsPhysicalPrimary() ) continue;
4223 if(TMath::Abs(p0->Eta())>fTrigEtaMax) continue;
4224 if( ( p0->Pt() < fTrigPtMCMin ) || ( p0->Pt() > fTrigPtMCMax ) ) continue;
4226 fTriggerPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, p0->Pt(), p0->Phi(), p0->Eta(), 0, 0, 1) );
4228 } // End loop over charged particles
4230 // -----------------------------------------
4231 // ---------- Strange particles ------------
4232 // -----------------------------------------
4233 //fEndOfHijingEvent = -1;
4234 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
4235 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
4238 // ----------------------------------------
4239 Int_t lPdgcodeCurrentPart = p0->GetPdgCode();
4240 if ( (lPdgcodeCurrentPart != kK0Short) &&
4241 (lPdgcodeCurrentPart != kLambda0) &&
4242 (lPdgcodeCurrentPart != kLambda0Bar) &&
4243 //Adding Xi- and Xi0 particles
4244 (lPdgcodeCurrentPart != kXiMinus) &&
4245 (lPdgcodeCurrentPart != 3322) ) continue;
4247 // ----------------------------------------
4248 Int_t isNaturalPart = 1;
4249 if ( (iTrkMC>=fEndOfHijingEvent) &&
4250 (fEndOfHijingEvent!=-1) &&
4251 (p0->GetMother()<0) )
4254 if( lPdgcodeCurrentPart != kXiMinus )
4255 fInjectedParticles->Fill(isNaturalPart);
4257 if(fSeparateInjPart && !isNaturalPart) continue;
4259 // ----------------------------------------
4260 Float_t lRapCurrentPart = MyRapidity(p0->E(),p0->Pz());
4261 Float_t lEtaCurrentPart = p0->Eta();
4262 Float_t lPhiCurrentPart = p0->Phi();
4263 Float_t lPtCurrentPart = p0->Pt();
4266 lRapCurrentPart = lEtaCurrentPart;
4269 Int_t iCurrentMother = p0->GetMother();
4270 AliAODMCParticle *pCurrentMother = (AliAODMCParticle *)stack->At(iCurrentMother);
4271 Int_t lPdgCurrentMother = 0;
4272 if (iCurrentMother == -1) { lPdgCurrentMother = 0;}
4273 else { lPdgCurrentMother = pCurrentMother->GetPdgCode(); }
4275 Int_t id0 = p0->GetDaughter(0);
4276 Int_t id1 = p0->GetDaughter(1);
4278 //if ( id0 == id1 ) continue;
4279 if ( (id0 < 0 || id1 < 0) ||
4280 (id0 >=nTrkMC || id1 >= nTrkMC) ) continue;
4282 AliAODMCParticle *pDaughter0 = (AliAODMCParticle *)stack->UncheckedAt(id0);
4283 AliAODMCParticle *pDaughter1 = (AliAODMCParticle *)stack->UncheckedAt(id1);
4284 if (!pDaughter0 || !pDaughter1) continue;
4287 if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
4288 TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
4291 // Daughter momentum cut: ! FIX it in case of AOD !
4293 if ( ( pDaughter0->Pt() < fMinPtDaughter ) ||
4294 ( pDaughter1->Pt() < fMinPtDaughter ) )
4298 if ((p0->Pt())<pMin || (p0->Pt())>100. ) continue;
4299 if (TMath::Abs(lRapCurrentPart) > fYMax) continue;
4301 Float_t dx = mcXv-p0->Xv(), dy = mcYv-p0->Yv(), dz = mcZv-p0->Zv();
4302 Float_t l = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
4304 //Cut in the 3D-distance of the secondary vertex to primary vertex
4305 if (l > 0.01) continue; // secondary V0
4307 //Transverse distance to vertex
4308 dx = mcXv-pDaughter0->Xv(); dy = mcYv-pDaughter0->Yv();
4309 //Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
4312 if((p0->Pt())<10.) {
4315 if (lPdgcodeCurrentPart == kK0Short) {
4317 fK0sMCPt->Fill(lPtCurrentPart);
4318 fK0sMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4321 fK0sMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4322 fK0sMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
4324 if(TMath::Abs(lRapCurrentPart)<fYMax) fK0sMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
4326 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
4327 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 3) );
4330 fK0sMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4331 if(TMath::Abs(lRapCurrentPart)<fYMax) fK0sMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
4334 } // End K0s selection
4336 if (lPdgcodeCurrentPart == kLambda0) {
4338 fLambdaMCPt->Fill(lPtCurrentPart);
4339 fLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4342 fLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4343 fLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
4345 if(TMath::Abs(lRapCurrentPart)<fYMax) fLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
4347 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
4348 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 4) );
4351 fLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4352 fLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
4355 if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 )
4356 fLambdaMCFromXi->Fill(lPtCurrentPart,centrality);
4360 if (lPdgcodeCurrentPart == kLambda0Bar) {
4362 fAntiLambdaMCPt->Fill(lPtCurrentPart);
4363 fAntiLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4366 fAntiLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4367 fAntiLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
4369 if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
4371 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
4372 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 5) );
4375 fAntiLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
4376 if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
4379 if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 )
4380 fAntiLambdaMCFromXi->Fill(lPtCurrentPart,centrality);
4384 } // End pt selection
4387 if(lPdgcodeCurrentPart == kXiMinus || lPdgcodeCurrentPart == 3322){
4390 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 6) );
4395 } // End loop over MC
4397 // -----------------------------------------
4398 // ---------- MC Correlations --------------
4399 // -----------------------------------------
4401 Float_t triggerMCPt = -1000.;
4402 Float_t triggerMCPhi = -1000.;
4403 Float_t triggerMCEta = -1000.;
4405 Float_t dPhiMC = -100.;
4406 Float_t dEtaMC = -100.;
4408 for(Int_t ii=0; ii<(fTriggerPartMC->GetEntriesFast()); ii++){
4409 AliMiniParticle* trigMC = (AliMiniParticle*) fTriggerPartMC->At(ii);
4411 triggerMCPt = trigMC->Pt();
4412 triggerMCPhi = trigMC->Phi();
4413 triggerMCEta = trigMC->Eta();
4415 fTriggerMCPtCent->Fill(triggerMCPt,centrality);
4417 for(Int_t jj=0; jj<(fAssocPartMC->GetEntriesFast()); jj++){
4419 AliMiniParticle* assocMC = (AliMiniParticle*) fAssocPartMC->At(jj);
4420 if(assocMC->Pt()>triggerMCPt) continue;
4422 dPhiMC = dPHI(triggerMCPhi,assocMC->Phi());
4423 dEtaMC = triggerMCEta - assocMC->Eta();
4425 // K0s, Lambdas and AntiLambdas (h-V0 correlations)
4426 if( (triggerMCPt<fTrigPtMax) && ( (assocMC->WhichCandidate()==3) || (assocMC->WhichCandidate()==4) || (assocMC->WhichCandidate()==5) ) )
4427 for(Int_t k=0;k<kN1;k++) // Pt bin
4428 if( (assocMC->Pt()>=kPtBinV0[k]) && (assocMC->Pt()<kPtBinV0[k+1]) ){
4429 if(assocMC->WhichCandidate()==3)
4430 fK0sdPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
4431 if(assocMC->WhichCandidate()==4)
4432 fLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
4433 if(assocMC->WhichCandidate()==5)
4434 fAntiLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
4437 } // End loop over trigger particles
4439 } // End loop over trigger particles
4441 } // End MC condition
4443 // *************************************************
4445 fAssocParticles = new TObjArray();
4446 fAssocParticles->SetOwner(kTRUE);
4448 V0Loop(kReconstruction,kTRUE,-1,-1);
4450 V0Loop(kReconstruction,kFALSE,-1,-1);
4452 //-------------------------------------------------------------
4454 //-------------------------------------------------------------
4456 // variables for correlations:
4457 Float_t ptTrig=0., pxTrig=0., pyTrig=0.;
4458 Float_t massK0s=0., mK0s=0., sK0s=0.;
4459 Float_t massL=0., mL=0., sL=0.;
4460 Float_t massAL=0.; //, mAL=0., sAL=0.;
4461 Float_t pt=-100., pxAssoc=-1000., pyAssoc=-1000.;
4462 Float_t lPhi=0., lEta=0.;
4463 Float_t lAlphaV0=0., lPtArmV0=0, dcaPos=0., dcaNeg=0.;
4464 Float_t dx=-100., dy=-100., lt=-100., res=-100.;
4465 Float_t dlK=-100., dlL=-100.;
4466 Float_t dPhi=-100., dEta=-100., radio=-100.;
4468 // variables for track splititing checks:
4469 Float_t posdPhiS = -9999., posdEtaS = -9999., negdPhiS = -9999., negdEtaS = -9999.;
4470 Float_t fracTrigTPCSharedMap=-1., fracPosDaugTPCSharedMap =-1., fracNegDaugTPCSharedMap =-1.;
4471 //Bool_t trigTPCMapOk=kTRUE, posDaugTPCMapOk=kTRUE, negDaugTPCMapOk=kTRUE;
4472 Float_t RdPhiStarMaxPosDaug=-1., RdPhiStarMaxNegDaug=-1., den=1.;
4473 Double_t trigCov[21], posDaugCov[21], negDaugCov[21];
4474 Double_t trigPos[6], posDaugPos[6], negDaugPos[6];
4475 Double_t trigXYZ[3], posDaugXYZ[3], negDaugXYZ[3];
4476 Double_t devPosDaugTrig[9], devNegDaugTrig[9], splitCont[9], splitCont2[12];
4477 Int_t sameSignPosDaug = -1, sameSignNegDaug = -1;
4478 Float_t sameLabelPosDaug = 0., sameLabelNegDaug = 0.;
4479 Int_t tlab, nlab, plab;
4480 Double_t resdEtsSdPhiS[6];
4482 // --------------------------------
4483 // h-V0 correlations
4484 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
4485 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
4486 if( trig->WhichCandidate() == 0 ) continue;
4488 const AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
4489 ptTrig = tTrig->Pt(); pxTrig = tTrig->Px(); pyTrig = tTrig->Py();
4491 // ---------------- Fraction of TPC Shared Cluster:
4492 fracTrigTPCSharedMap = GetFractionTPCSharedCls(tTrig);
4494 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
4495 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
4496 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
4497 const AliAODTrack *ntrack=(AliAODTrack *)tAssoc->GetDaughter(1);
4498 const AliAODTrack *ptrack=(AliAODTrack *)tAssoc->GetDaughter(0);
4500 if( SameTrack(tTrig,ntrack) || SameTrack(tTrig,ptrack) )
4503 if( ptTrig < trackAssocME->Pt() ) continue;
4505 lPhi = trackAssocME->Phi();
4506 lEta = trackAssocME->Eta();
4508 // Correlation in deltaPhi & deltaEta
4509 dPhi = dPHI(trig->Phi(),lPhi);
4510 dEta = trig->Eta() - lEta;
4511 radio = TMath::Sqrt(dPhi*dPhi + dEta*dEta);
4513 // Armenteros variables:
4514 lAlphaV0 = tAssoc->AlphaV0();
4515 lPtArmV0 = tAssoc->PtArmV0();
4518 pt = trackAssocME->Pt(); pxAssoc = tAssoc->Px(); pyAssoc = tAssoc->Py();
4520 Double_t xyz[3]; tAssoc->GetSecondaryVtx(xyz);
4521 dx=xyz[0]-xv; dy=xyz[1]-yv; //dz=xyz[2]-zv;
4523 lt=TMath::Sqrt(dx*dx + dy*dy);
4524 // Spatial resolution trigger-V0 point decay
4525 res = SpatialResolution(pxTrig,pyTrig,pxAssoc,pyAssoc,lt);
4530 Int_t binPtv0 = PtBin( pt );
4531 if(binPtv0==-1) continue;
4533 Int_t lMCAssocNegDaug = trackAssocME->NegDaugMCLabel();
4534 Int_t lMCAssocPosDaug = trackAssocME->PosDaugMCLabel();
4536 // ----------------------------------------------------------------------------
4538 // -----------------------------------------------------------------
4539 // ****************** Track splitting check ******************
4540 // -----------------------------------------------------------------
4542 sameLabelPosDaug = 0.; sameLabelNegDaug = 0.;
4543 sameSignPosDaug = -1; sameSignNegDaug = -1;
4544 RdPhiStarMaxPosDaug=-1.; RdPhiStarMaxNegDaug=-1.;
4545 //trigTPCMapOk=kTRUE; posDaugTPCMapOk=kTRUE; negDaugTPCMapOk=kTRUE;
4546 fracPosDaugTPCSharedMap=0; fracNegDaugTPCSharedMap=0;
4548 // ---------------- Fraction of TPC Shared Cluster
4549 fracPosDaugTPCSharedMap = GetFractionTPCSharedCls(ptrack);
4550 fracNegDaugTPCSharedMap = GetFractionTPCSharedCls(ntrack);
4552 // =========== Classical methods for track-splitting ============= //
4553 if( TMath::Abs(dPhi)<0.1 && TMath::Abs(dEta)<0.1 ){
4555 // --------- Check sign of the trigger and daughter track:
4556 if(tTrig->Charge()==1) { sameSignPosDaug = 1; sameSignNegDaug = 0; }
4557 else { sameSignPosDaug = 0; sameSignNegDaug = 1; }
4559 // -------- Shifting charged tracks to the primary vertex.
4560 // -------- See HBT anlayses:
4562 // Trigger particle:
4563 SetSftPosR125(tTrig,bSign,priVtx,"Trigger");
4565 // Positive daughter: calculating delta(phi)* and delta(eta)*
4566 SetSftPosR125(ptrack,bSign,priVtx,"Daughter");
4567 posdPhiS = dPhiSAtR125();
4570 // Negative daughter: calculating delta(phi)* and delta(eta)*
4571 SetSftPosR125(ntrack,bSign,priVtx,"Daughter");
4572 negdPhiS = dPhiSAtR125();
4575 // ------ Get position:
4576 tTrig->GetXYZ(trigXYZ);
4577 ptrack->GetXYZ(posDaugXYZ);
4578 ntrack->GetXYZ(negDaugXYZ);
4580 // ------ Covaraince matrix for the tracks:
4581 tTrig->GetCovarianceXYZPxPyPz(trigCov);
4582 ptrack->GetCovarianceXYZPxPyPz(posDaugCov);
4583 ntrack->GetCovarianceXYZPxPyPz(negDaugCov);
4585 // ------- position and momentum:
4587 trigPos[0] = trigXYZ[0]; trigPos[1] = trigXYZ[1]; trigPos[2] = trigXYZ[2];
4588 trigPos[3] = tTrig->Px(); trigPos[4] = tTrig->Py(); trigPos[5] = tTrig->Pz();
4590 // positive daughter
4591 posDaugPos[0] = posDaugXYZ[0]; posDaugPos[1] = posDaugXYZ[1]; posDaugPos[2] = posDaugXYZ[2];
4592 posDaugPos[3] = ptrack->Px(); posDaugPos[4] = ptrack->Py(); posDaugPos[5] = ptrack->Pz();
4594 // negative daughter
4595 negDaugPos[0] = negDaugXYZ[0]; negDaugPos[1] = negDaugXYZ[1]; negDaugPos[2] = negDaugXYZ[2];
4596 negDaugPos[3] = ntrack->Px(); negDaugPos[4] = ntrack->Py(); negDaugPos[5] = ntrack->Pz();
4598 // ------- deviation between the two tracks:
4599 // positive daughter
4600 for(Int_t ll=0;ll<6;ll++){
4601 den = trigCov[ll*(ll+1)/2+ll] + posDaugCov[ll*(ll+1)/2+ll] ;
4602 devPosDaugTrig[ll] = 0.;
4604 if(den>0) devPosDaugTrig[ll] = TMath::Power( trigPos[ll] - posDaugPos[ll] ,2) / den;
4606 if(ll<3) devPosDaugTrig[6] += devPosDaugTrig[ll]; // sum in X,Y,Z
4607 if(ll>2) devPosDaugTrig[7] += devPosDaugTrig[ll]; // sum in momemtum
4608 devPosDaugTrig[8] += devPosDaugTrig[ll]; // sum in all variables
4611 // negative daughter
4612 for(Int_t ll=0;ll<6;ll++){
4613 den = trigCov[ll*(ll+1)/2+ll] + negDaugCov[ll*(ll+1)/2+ll] ;
4614 devNegDaugTrig[ll] = 0;
4616 if(den>0) devNegDaugTrig[ll] = TMath::Power( trigPos[ll] - negDaugPos[ll] ,2) / den;
4618 if(ll<3) devNegDaugTrig[6] += devNegDaugTrig[ll]; // sum in X,Y,Z
4619 if(ll>2) devNegDaugTrig[7] += devNegDaugTrig[ll]; // sum in momemtum
4620 devNegDaugTrig[8] += devNegDaugTrig[ll]; // sum in all variables
4625 // ---------------- Monte Carlo check for track-splitting
4628 TList *lst = fAOD->GetList();
4629 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
4631 Printf("ERROR: stack not available");
4635 sameLabelPosDaug = 1.*SameLabel(tTrig,ptrack);
4636 sameLabelNegDaug = 1.*SameLabel(tTrig,ntrack);
4638 // Resolution of delta(phi)* and delta(eta)*
4639 tlab = TMath::Abs(tTrig->GetLabel());
4640 plab = TMath::Abs(ptrack->GetLabel());
4641 nlab = TMath::Abs(ntrack->GetLabel());
4643 AliAODMCParticle *tPart=(AliAODMCParticle*)stack->UncheckedAt(tlab);
4644 AliAODMCParticle *pPart=(AliAODMCParticle*)stack->UncheckedAt(plab);
4645 AliAODMCParticle *nPart=(AliAODMCParticle*)stack->UncheckedAt(nlab);
4647 resdEtsSdPhiS[0] = pt;
4650 resdEtsSdPhiS[2] = ptrack->Pt();
4651 resdEtsSdPhiS[3] = (tPart->Phi() - pPart->Phi()) - posdPhiS;
4652 resdEtsSdPhiS[4] = (tPart->Eta() - pPart->Eta()) - posdEtaS;
4653 resdEtsSdPhiS[5] = sameSignPosDaug;
4655 if( trackAssocME->WhichCandidate() == 3 ){
4656 resdEtsSdPhiS[1] = massK0s;
4657 fK0sPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4659 if( trackAssocME->WhichCandidate() == 4 ){
4660 resdEtsSdPhiS[1] = massL;
4661 fLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4663 if( trackAssocME->WhichCandidate() == 5 ){
4664 resdEtsSdPhiS[1] = massAL;
4665 fAntiLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4668 // negative daughter
4669 resdEtsSdPhiS[2] = ntrack->Pt();
4670 resdEtsSdPhiS[3] = (tPart->Phi() - nPart->Phi()) - negdPhiS;
4671 resdEtsSdPhiS[4] = (tPart->Eta() - nPart->Eta()) - negdEtaS;
4672 resdEtsSdPhiS[5] = sameSignNegDaug;
4674 if( trackAssocME->WhichCandidate() == 3 ){
4675 resdEtsSdPhiS[1] = massK0s;
4676 fK0sNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4678 if( trackAssocME->WhichCandidate() == 4 ){
4679 resdEtsSdPhiS[1] = massL;
4680 fLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4682 if( trackAssocME->WhichCandidate() == 5 ){
4683 resdEtsSdPhiS[1] = massAL;
4684 fAntiLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
4689 // ================ Alternative methods for track-splitting ==================
4690 if(TMath::Abs(dPhi)<0.02 && TMath::Abs(dEta)<0.02){
4692 // --------- Calculate TPCRadius*Delta(phi)Star_Max distance:
4693 RdPhiStarMaxPosDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ptrack->Phi(), ptrack->Eta(), ptrack->Pt(), 1, bSign);
4694 RdPhiStarMaxNegDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ntrack->Phi(), ntrack->Eta(), ntrack->Pt(), -1, bSign);
4696 // -------- Comparison between trigger and daughter tracks:
4697 // -------- Filling deviation of matrix elements
4698 splitCont[0] = pt; splitCont[5] = fracTrigTPCSharedMap;
4700 // ---------------------------
4701 // -------- Positive daughter:
4702 splitCont[2] = ptrack->Pt(); splitCont[3] = sameSignPosDaug;
4703 splitCont[4] = RdPhiStarMaxPosDaug; splitCont[6] = fracPosDaugTPCSharedMap;
4706 if( trackAssocME->WhichCandidate() == 3 ){
4707 splitCont[1] = massK0s;
4708 for(Int_t ll=0; ll<=8; ll++){
4709 splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
4710 fK0sPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4715 if( trackAssocME->WhichCandidate() == 4 ){
4716 splitCont[1] = massL;
4717 for(Int_t ll=0; ll<=8; ll++){
4718 splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
4719 fLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4724 if( trackAssocME->WhichCandidate() == 5 ){
4725 splitCont[1] = massAL;
4726 for(Int_t ll=0; ll<=8; ll++){
4727 splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
4728 fAntiLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4732 // End: Positive daughter
4734 // ---------------------------
4735 // -------- Negative daughter:
4736 splitCont[2] = ntrack->Pt(); splitCont[3] = sameSignNegDaug;
4737 splitCont[4] = RdPhiStarMaxNegDaug; splitCont[6] = fracNegDaugTPCSharedMap;
4740 if( trackAssocME->WhichCandidate() == 3 ){
4741 splitCont[1] = massK0s;
4742 for(Int_t ll=0; ll<=8; ll++){
4743 splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
4744 fK0sNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4749 if( trackAssocME->WhichCandidate() == 4 ){
4750 splitCont[1] = massL;
4751 for(Int_t ll=0; ll<=8; ll++){
4752 splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
4753 fLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4758 if( trackAssocME->WhichCandidate() == 5 ){
4759 splitCont[1] = massAL;
4760 for(Int_t ll=0; ll<=8; ll++){
4761 splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
4762 fAntiLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
4766 // End: Negative daughter
4768 } // end selection in |delta(eta)| < 0.02, |delta(phi)| < 0.02
4771 // ================ FILLING THnSparse: Classical track-splitting method: d(phi)* and d(eta)*
4772 splitCont2[0] = pt; splitCont2[6] = fracTrigTPCSharedMap;
4774 // --------------------------
4775 // -------- Positive daughter:
4776 splitCont2[2] = ptrack->Pt(); splitCont2[3] = sameSignPosDaug; splitCont2[4] = posdPhiS; splitCont2[5] = posdEtaS;
4777 splitCont2[7] = fracPosDaugTPCSharedMap; splitCont2[8] = fracTrigTPCSharedMap - fracPosDaugTPCSharedMap;
4778 splitCont2[9] = devPosDaugTrig[7]; splitCont2[10] = tAssoc->DcaPosToPrimVertex(); splitCont2[11] = sameLabelPosDaug;
4781 if( trackAssocME->WhichCandidate() == 3 ){
4782 splitCont2[1] = massK0s;
4783 // Positive daughter
4784 fK0sPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4787 if( trackAssocME->WhichCandidate() == 4 ){
4788 splitCont2[1] = massL;
4789 // Positive daughter
4790 fLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4793 if( trackAssocME->WhichCandidate() == 5 ){
4794 splitCont2[1] = massAL;
4795 // Positive daughter
4796 fAntiLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4799 // --------------------------
4800 // ------- Negative daughter:
4801 splitCont2[2] = ntrack->Pt(); splitCont2[3] = sameSignNegDaug; splitCont2[4] = negdPhiS; splitCont2[5] = negdEtaS;
4802 splitCont2[7] = fracNegDaugTPCSharedMap; splitCont2[8] = fracTrigTPCSharedMap - fracNegDaugTPCSharedMap;
4803 splitCont2[9] = devNegDaugTrig[7]; splitCont2[10] = tAssoc->DcaNegToPrimVertex(); splitCont2[11] = sameLabelNegDaug;
4806 if( trackAssocME->WhichCandidate() == 3 ){
4807 splitCont2[1] = massK0s;
4808 // Negative daughter
4809 fK0sNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4812 if( trackAssocME->WhichCandidate() == 4 ){
4813 splitCont2[1] = massL;
4814 // Negative daughter
4815 fLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4818 if( trackAssocME->WhichCandidate() == 5 ){
4819 splitCont2[1] = massAL;
4820 // Negative daughter
4821 fAntiLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
4824 } // end selection in |delta(eta)| < 0.1, |delta(phi)| < 0.1
4826 // ----------------------------------------------------------------
4827 // Reject the 'fake' correlation due to the TPC shared clusters
4828 // between trigger particle and one of the daughter tracks
4829 // The rejection will affect more the correlations:
4830 // - Trigger track - Positive track (from Lambda with pt above 3 GeV/c)
4831 // - Trigger track - Negative track (from AntiLambda with pt above 3 GeV/c)
4832 /* if( fracTrigTPCSharedMap>0.5 &&
4833 ( ( sameSignPosDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracPosDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ||
4834 ( sameSignNegDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracNegDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ) )*/
4836 if( (fracTrigTPCSharedMap > fFracTPCcls) || (fracPosDaugTPCSharedMap > fFracTPCcls) || (fracNegDaugTPCSharedMap > fFracTPCcls) )
4839 // ----------------------------------------------------------------------------
4841 // *******************
4843 // *******************
4844 if( trackAssocME->WhichCandidate() == 3 ){
4846 massK0s = tAssoc->MassK0Short();
4847 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
4848 if( fCollision.Contains("PbPb2010") )
4849 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
4850 else if( fCollision.Contains("PbPb2011") )
4851 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
4853 // ==== Correlations K0s invariant mass peak ==== //
4854 // +++++++++++ Pt bin & centrality
4855 fK0sdPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massK0s);
4857 // ==== Correlations K0s invariant mass peak ==== //
4858 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
4861 fK0sSpatialRes->Fill(dPhi,res,lt);
4864 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
4865 fK0sDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
4866 RecCascade(tTrig,ntrack,ptrack,"K0s");
4867 RecCascade(tTrig,ptrack,ntrack,"K0s");
4871 // ==== Correlations K0s background ==== //
4872 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
4873 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
4875 // Only fills the histograms when it is a triggered event
4877 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,1);
4878 // MC Association of daughter particles
4879 fK0sBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
4880 fK0sBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
4883 // Pt bin & centrality
4884 //fK0sdPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
4886 if(radio < 0.4){ // Under the correlation peak
4887 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
4888 fK0sBckgDecLength->Fill(dlK,ptTrig);
4889 fK0sBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
4890 fK0sBckgEtaPhi->Fill(lPhi,lEta);
4891 fK0sBckgPhiRadio->Fill(lPhi,lt);
4893 //RecCascade(trkTrig,ntrack,ptrack,"K0s");
4894 //RecCascade(trkTrig,ptrack,ntrack,"K0s");
4896 }// End selection in the correlation peak
4898 } // End background selection
4900 } // End K0s selection
4902 // *******************
4904 // *******************
4905 if( trackAssocME->WhichCandidate() == 4 ){
4906 massL = tAssoc->MassLambda();
4907 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
4908 if( fCollision.Contains("PbPb2010") )
4909 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
4910 else if( fCollision.Contains("PbPb2011") )
4911 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
4913 // ==== Correlations Lambda invariant mass peak ==== //
4914 // +++++++++++ Pt bin & centrality
4915 fLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massL);
4917 // ==== Correlations Lambda invariant mass peak ==== //
4918 if (TMath::Abs(mL-massL) < 3*sL) {
4921 fLambdaSpatialRes->Fill(dPhi,res,lt);
4923 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
4924 fLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
4925 RecCascade(tTrig,ntrack,ptrack,"Lambda");
4926 RecCascade(tTrig,ptrack,ntrack,"Lambda");
4929 } // End mass peak selection
4930 // ==== Correlations Lambda background ==== //
4931 if( TMath::Abs(mL-massL + 6.5*sL) < 1.5*sL ||
4932 TMath::Abs(mL-massL - 6.5*sL) < 1.5*sL ) {
4934 // Only fills the histograms when it is a triggered event
4936 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,3);
4937 // MC Association of daughter particles
4938 fLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
4939 fLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
4942 // Pt bin & centrality
4943 //fLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
4945 if(radio < 0.4){ // Under the peak
4946 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,3);
4947 fLambdaBckgDecLength->Fill(dlL,ptTrig);
4948 fLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
4949 fLambdaBckgEtaPhi->Fill(lPhi,lEta);
4950 fLambdaBckgPhiRadio->Fill(lPhi,lt);
4952 //RecCascade(trkTrig,ntrack,ptrack,"Lambda");
4953 //RecCascade(trkTrig,ptrack,ntrack,"Lambda");
4955 }// End selection in the correlation peak
4957 } // End background selection
4959 }// End Lambda selection
4960 // *******************
4961 // AntiLambda selection
4962 // *******************
4963 if( trackAssocME->WhichCandidate() == 5 ){
4964 massAL = tAssoc->MassAntiLambda();
4965 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
4966 if( fCollision.Contains("PbPb2010") )
4967 sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
4968 else if( fCollision.Contains("PbPb2011") )
4969 sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
4971 // ==== Correlations Lambda invariant mass peak ==== //
4972 // +++++++++++ Pt bin & centrality
4973 fAntiLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massAL);
4975 // ==== Correlations AntiLambda invariant mass peak ==== //
4976 if (TMath::Abs(mL-massAL) < 3*sL) {
4979 fAntiLambdaSpatialRes->Fill(dPhi,res,lt);
4981 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,4);
4982 fAntiLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
4983 RecCascade(tTrig,ntrack,ptrack,"AntiLambda");
4984 RecCascade(tTrig,ptrack,ntrack,"AntiLambda");
4987 } // End AntiLambda mass peak
4988 // ==== Correlations AntiLambda background ==== //
4989 if( (TMath::Abs(mL-massAL + 6.5*sL) < 1.5*sL) ||
4990 (TMath::Abs(mL-massAL - 6.5*sL) < 1.5*sL) ){
4992 // ----------------------------------------------
4994 // Only fills the histograms when it is a triggered event
4996 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,5);
4997 // MC Association of daughter particles
4998 fAntiLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
4999 fAntiLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
5002 // Pt bin & centrality
5003 //fAntiLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
5005 if(radio < 0.4){ // Under the peak
5006 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,5);
5007 fAntiLambdaBckgDecLength->Fill(dlL,ptTrig);
5008 fAntiLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
5009 fAntiLambdaBckgEtaPhi->Fill(lPhi,lEta);
5010 fAntiLambdaBckgPhiRadio->Fill(lPhi,lt);
5012 //RecCascade(trkTrig,ntrack,ptrack,"AntiLambda");
5013 //RecCascade(trkTrig,ptrack,ntrack,"AntiLambda");
5015 }// End selection in the correlation peak
5017 }// End AntiLambda background
5019 } // End AntiLambda selection
5021 } // End loop over associated particles
5024 // Filling information of the trigger particle
5025 // after the rejection in the cut of shared TPC cls
5026 fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
5027 fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
5029 } // End loop over trigger particles
5032 //-------------------------------------------------------------
5034 //-------------------------------------------------------------
5036 Double_t phiTrigME=0, etaTrigME=0, phiAssocME=0, etaAssocME=0;
5037 Double_t deltaPhi=0, deltaEta=0;
5039 TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
5040 Int_t nMixed = evMixList->GetSize();
5042 if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
5044 for(Int_t ii=0; ii<nMixed; ii++){
5046 AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
5047 phiTrigME = trackTriggerME->Phi();
5048 etaTrigME = trackTriggerME->Eta();
5050 // --- V0 associated particles
5051 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
5053 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
5054 if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
5055 if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
5056 if( trackAssocME->WhichCandidate() == 2 ) continue;
5058 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
5061 Bool_t IsSelected = kFALSE;
5063 if( trackAssocME->WhichCandidate() == 3 ){
5064 massK0s = tAssoc->MassK0Short();
5065 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
5066 if( fCollision.Contains("PbPb2010") )
5067 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
5068 else if( fCollision.Contains("PbPb2011") )
5069 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
5071 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
5074 if( trackAssocME->WhichCandidate() == 4 ){
5075 massL = tAssoc->MassLambda();
5076 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
5077 if( fCollision.Contains("PbPb2010") )
5078 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
5079 else if( fCollision.Contains("PbPb2011") )
5080 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
5082 if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
5085 if( trackAssocME->WhichCandidate() == 5 ){
5086 massAL = tAssoc->MassAntiLambda();
5087 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
5088 if( fCollision.Contains("PbPb2010") )
5089 sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
5090 else if( fCollision.Contains("PbPb2011") )
5091 sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
5093 if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
5096 if(!IsSelected) continue;
5098 phiAssocME = trackAssocME->Phi();
5099 etaAssocME = trackAssocME->Eta();
5101 deltaPhi = dPHI(phiTrigME,phiAssocME);
5102 deltaEta = etaTrigME - etaAssocME;
5104 Int_t binPtv0 = PtBin( trackAssocME->Pt() );
5105 if(binPtv0==-1) continue;
5107 if( trackAssocME->WhichCandidate() == 3 ) {
5108 fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);}
5109 else if( trackAssocME->WhichCandidate() == 4 )
5110 fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
5111 else if( trackAssocME->WhichCandidate() == 5 )
5112 fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
5114 } // End loop over V0's
5120 //--------------------------------------------------------
5121 //Add the current event to the list of events for mixing
5122 //--------------------------------------------------------
5124 //Add current event to buffer and Remove redundant events
5125 if(fTriggerParticles->GetEntriesFast()>=0){
5127 for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
5128 AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
5129 //cout << trkTrig->Pt() << " " << ii << endl;
5131 if(evMixList->GetSize() < nMaxEvMix)
5132 evMixList->AddFirst(trkTrig);
5134 if(evMixList->GetSize() >= nMaxEvMix) {
5135 AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
5136 evMixList->RemoveLast();
5141 }// End loop over fTriggerParticles
5143 }// End adding trigger particles to buffers
5147 //___________________________________________________________________________________________
5149 void AliAnalysisTaskLambdaOverK0sJets::Terminate(Option_t *)
5151 // The Terminate() function is the last function to be called during
5152 // a query. It always runs on the client, it can be used to present
5153 // the results graphically or save the results to file.
5155 fOutput=(TList*)GetOutputData(1);
5156 fOutputME=(TList*)GetOutputData(2);
5157 fOutputQA=(TList*)GetOutputData(3);
5159 if (fOutput || fOutputME || fOutputQA) {
5162 Printf("\n\t *** DONE: fOutput available *** \n");
5164 Printf("\n\t *** DONE: fOutputME available *** \n");
5166 Printf("\n\t *** DONE: fOutputQA available *** \n");
5168 if (!fOutput || !fOutputME || !fOutputQA) {
5171 Printf("\n\t *** ERROR: fOutput not available *** \n");
5173 Printf("\n\t *** ERROR: fOutputME available *** \n");
5175 Printf("\n\t *** ERROR: fOutputQA not available *** \n");