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