]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/STRANGENESS/Correlations/AliAnalysisTaskLambdaOverK0sJets.cxx
Revert accidental changes
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Correlations / AliAnalysisTaskLambdaOverK0sJets.cxx
index b26b2fb8ada6a8eb718da6d3b63e01a4f8a12ac1..3f87d61294f53cfffa64a80c2157c7a4f0f8cf93 100644 (file)
@@ -20,6 +20,7 @@
 #include <TFile.h>
 #include <TH1F.h>
 #include <TH2F.h>
+#include <THnSparse.h>
 #include <TH3F.h>
 #include <TPDGCode.h>
 #include <TDatabasePDG.h>
 #include "AliInputEventHandler.h"
 #include "AliAnalysisManager.h"
 
+#include "AliExternalTrackParam.h"
+
 #include "AliAnalysisTaskLambdaOverK0sJets.h"
 
-extern TROOT *gROOT;
+//extern TROOT *gROOT;
 
 
 ClassImp(AliAnalysisTaskLambdaOverK0sJets)
@@ -69,50 +72,59 @@ static Float_t ptMaxLP = 50.;               // Max cut for transverse momentum L
 static Float_t lMin = 0.0;                  // Limits in the histo for fidutial volume
 static Float_t lMax = 100.;                 // Limits in the fidutial volume
 
-static Int_t   nMaxEvMix = 250;
+//static Int_t   nMaxEvMix = 250;
 
 //
 //  
 //
 
 AliAnalysisTaskLambdaOverK0sJets::AliAnalysisTaskLambdaOverK0sJets(const char *name) :
-  AliAnalysisTaskSE(name),
+AliAnalysisTaskSE(name),
 
   fAOD(0),  fCollision("PbPb2010"), fIsMC(kFALSE), fUsePID(kFALSE), fCentMin(0.), fCentMax(90.), fDoQA(kFALSE), fDoMixEvt(kFALSE), fTrigPtMin(5.), fTrigPtMax(10.), fTrigPtMCMin(5.), fTrigPtMCMax(10000.), fTrigEtaMax(0.8), fCheckIDTrig(kFALSE), fSeparateInjPart(kTRUE), fEndOfHijingEvent(-1),  fPIDResponse(0),
 
-  fMinPtDaughter(0.160), fMaxEtaDaughter(0.8), fMaxDCADaughter(1.0), fYMax(0.5), fDCAToPrimVtx(0.1), fMinCPA(0.998), fNSigma(3.0),fDaugNClsTPC(70.), fMinCtau(0.), fMaxCtau(3.), fIdTrigger(-1), fIsV0LP(0), fPtV0LP(0.), fIsSndCheck(0),
+  fMinPtDaughter(0.160), fMaxEtaDaughter(0.8), fMaxDCADaughter(1.0), fUseEtaCut(kFALSE), fYMax(0.7), fDCAToPrimVtx(0.1), fMinCPA(0.998), fNSigma(3.0), fDaugNClsTPC(70.), fMinCtau(0.), fMaxCtau(3.), fIdTrigger(-1), fIsV0LP(0), fPtV0LP(0.), fIsSndCheck(0),
+
+  fTPCRadius(125.), fDiffTrigDaugFracTPCSharedCls(0.06),
 
-  fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fXiTriggerPartMC(0x0), fEvents(0), fCentrality(0),  fCentrality2(0), fCentralityTrig(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0),
+  fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fEvents(0), fCentrality(0),  fCentrality2(0), fCentralityTrig(0), fPrimayVtxGlobalvsSPD(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0),
 
fTriggerEventPlane(0),  fTriggerMCPtCent(0), fTriggerMCResPt(0), fTriggerMCResEta(0), fTriggerMCResPhi(0), fTriggerPtCent(0), fNTrigPerEvt(0), fTriggerWiSPDHit(0), fTriggerEtaPhi(0), fCheckTriggerFromV0Daug(0), fTriggerComingFromDaug(0), fTriggerIsV0(0), fCheckIDTrigPtK0s(0), fCheckIDTrigPhiK0s(0), fCheckIDTrigEtaK0s(0), fCheckIDTrigNclsK0s(0), fCheckIDTrigPtLambda(0), fCheckIDTrigPhiLambda(0), fCheckIDTrigEtaLambda(0),  fCheckIDTrigNclsLambda(0), fCheckIDTrigPtAntiLambda(0), fCheckIDTrigPhiAntiLambda(0), fCheckIDTrigEtaAntiLambda(0), fCheckIDTrigNclsAntiLambda(0), 
 fTriggerEventPlane(0),  fTriggerMCPtCent(0), fTriggerMCResPt(0), fTriggerMCResEta(0), fTriggerMCResPhi(0), fTriggerPtCent(0),  fTriggerPtCentCh(0), fNTrigPerEvt(0), fTriggerWiSPDHit(0), fTriggerEtaPhi(0), fCheckTriggerFromV0Daug(0), fTriggerComingFromDaug(0), fTriggerIsV0(0), fCheckIDTrigPtK0s(0), fCheckIDTrigPhiK0s(0), fCheckIDTrigEtaK0s(0), fCheckIDTrigNclsK0s(0), fCheckIDTrigPtLambda(0), fCheckIDTrigPhiLambda(0), fCheckIDTrigEtaLambda(0),  fCheckIDTrigNclsLambda(0), fCheckIDTrigPtAntiLambda(0), fCheckIDTrigPhiAntiLambda(0), fCheckIDTrigEtaAntiLambda(0), fCheckIDTrigNclsAntiLambda(0), 
 
-fInjectedParticles(0),
+  fInjectedParticles(0),
 
-fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapVtx(0), fK0sMCPtRapEmbeded(0), fK0sMCPtRapVtxEmbeded(0), fK0sAssocPt(0), fK0sAssocPtArm(0),  fK0sAssocPtRap(0), fK0sAssocPtRapEmbeded(0), fK0sMCResEta(0), fK0sMCResPhi(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0),  fLambdaMCPtRapVtx(0), fLambdaMCPtRapEmbeded(0),  fLambdaMCPtRapVtxEmbeded(0), fLambdaMCFromXi(0), fLambdaAssocPt(0), fLambdaAssocPtRap(0), fLambdaAssocFromXi(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaMCPtRapVtx(0), fAntiLambdaMCPtRapEmbeded(0), fAntiLambdaMCPtRapVtxEmbeded(0), fAntiLambdaMCFromXi(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtRap(0), fAntiLambdaAssocFromXi(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0),
+  fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0),  fK0sMCPtRapEmbeded(0), fK0sAssocPt(0), fK0sAssocPtArm(0),  fK0sAssocPtRap(0), fK0sAssocPtRapEmbeded(0), fK0sMCResEta(0), fK0sMCResPhi(0), fK0sMCResPt(0), fK0sPosMCResEta(0), fK0sPosMCResPhi(0), fK0sPosMCResPt(0), fK0sNegMCResEta(0), fK0sNegMCResPhi(0), fK0sNegMCResPt(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0),  fLambdaMCPtRapEmbeded(0),  fLambdaMCFromXi(0), fLambdaAssocPt(0), fLambdaAssocPtRap(0), fLambdaAssocFromXi(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fLambdaMCResPt(0), fLambdaPosMCResEta(0), fLambdaPosMCResPhi(0), fLambdaPosMCResPt(0), fLambdaNegMCResEta(0), fLambdaNegMCResPhi(0), fLambdaNegMCResPt(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaMCPtRapEmbeded(0), fAntiLambdaMCFromXi(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtRap(0), fAntiLambdaAssocFromXi(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0), fAntiLambdaMCResPt(0), fAntiLambdaPosMCResEta(0), fAntiLambdaPosMCResPhi(0), fAntiLambdaPosMCResPt(0), fAntiLambdaNegMCResEta(0), fAntiLambdaNegMCResPhi(0), fAntiLambdaNegMCResPt(0), 
 
   fHistArmenterosPodolanski(0), fHistArmPodBckg(0),
   
-  fK0sMass(0), fK0sMassEmbeded(0), fK0sMassPtEta(0), fK0sMassPtRap(0), fK0sMassPtPhi(0), fK0sDaughtersPt(0), fK0sDCADaugToPrimVtx(0), fK0sSpatialRes(0), fK0sBckgDecLength(0), fK0sBckgDCADaugToPrimVtx(0), fK0sBckgEtaPhi(0), fK0sBckgPhiRadio(0), fK0sBckgDCANegDaugToPrimVtx(0), fK0sBckgDCAPosDaugToPrimVtx(0), fV0MassCascade(0),
+  fK0sMass(0), fK0sMassEmbeded(0), fK0sMassPtEta(0), fK0sMassPtPhi(0), fK0sDaughtersPt(0), fK0sDCADaugToPrimVtx(0), fK0sSpatialRes(0), fK0sBckgDecLength(0), fK0sBckgDCADaugToPrimVtx(0), fK0sBckgEtaPhi(0), fK0sBckgPhiRadio(0), fK0sBckgDCANegDaugToPrimVtx(0), fK0sBckgDCAPosDaugToPrimVtx(0), fV0MassCascade(0),
   
-  fLambdaMass(0), fLambdaMassEmbeded(0), fLambdaMass2(0), fLambdaMass2Embeded(0), fLambdaMassPtEta(0), fLambdaMassPtRap(0), fLambdaMassPtPhi(0), fLambdaDaughtersPt(0), fLambdaDCADaugToPrimVtx(0), fLambdaSpatialRes(0), fLambdaBckgDecLength(0), fLambdaBckgDCADaugToPrimVtx(0), fLambdaBckgEtaPhi(0), fLambdaBckgPhiRadio(0), fLambdaBckgDCANegDaugToPrimVtx(0), fLambdaBckgDCAPosDaugToPrimVtx(0), 
+  fLambdaMass(0), fLambdaMassEmbeded(0), fLambdaMass2(0), fLambdaMass2Embeded(0), fLambdaMassPtEta(0), fLambdaMassPtPhi(0), fLambdaDaughtersPt(0), fLambdaDCADaugToPrimVtx(0), fLambdaSpatialRes(0), fLambdaBckgDecLength(0), fLambdaBckgDCADaugToPrimVtx(0), fLambdaBckgEtaPhi(0), fLambdaBckgPhiRadio(0), fLambdaBckgDCANegDaugToPrimVtx(0), fLambdaBckgDCAPosDaugToPrimVtx(0), 
 
-  fAntiLambdaMass(0), fAntiLambdaMassEmbeded(0), fAntiLambdaMass2(0), fAntiLambdaMass2Embeded(0), fAntiLambdaMassPtEta(0), fAntiLambdaMassPtRap(0), fAntiLambdaMassPtPhi(0), fAntiLambdaDaughtersPt(0), fAntiLambdaDCADaugToPrimVtx(0), fAntiLambdaSpatialRes(0), fAntiLambdaBckgDecLength(0), fAntiLambdaBckgDCADaugToPrimVtx(0), fAntiLambdaBckgEtaPhi(0), fAntiLambdaBckgPhiRadio(0), fAntiLambdaBckgDCANegDaugToPrimVtx(0), fAntiLambdaBckgDCAPosDaugToPrimVtx(0), 
-
-  fXiMinusPtMCAssoc(0), fXiMinusPtMCTrigger(0),
+  fAntiLambdaMass(0), fAntiLambdaMassEmbeded(0), fAntiLambdaMass2(0), fAntiLambdaMass2Embeded(0), fAntiLambdaMassPtEta(0), fAntiLambdaMassPtPhi(0), fAntiLambdaDaughtersPt(0), fAntiLambdaDCADaugToPrimVtx(0), fAntiLambdaSpatialRes(0), fAntiLambdaBckgDecLength(0), fAntiLambdaBckgDCADaugToPrimVtx(0), fAntiLambdaBckgEtaPhi(0), fAntiLambdaBckgPhiRadio(0), fAntiLambdaBckgDCANegDaugToPrimVtx(0), fAntiLambdaBckgDCAPosDaugToPrimVtx(0), 
 
   fK0sPtPosDaug(0), fK0sPtNegDaug(0), fK0sBckgPtPosDaug(0), fK0sBckgPtNegDaug(0), fK0sPhiEtaPosDaug(0), fK0sPhiEtaNegDaug(0), fK0sBckgPhiEtaPosDaug(0), fK0sBckgPhiEtaNegDaug(0), fK0sDCAPosDaug(0), fK0sDCANegDaug(0), fK0sBckgDCAPosDaug(0), fK0sBckgDCANegDaug(0), fK0sDecayPos(0), fK0sBckgDecayPos(0), fK0sDecayVertex(0), fK0sBckgDecayVertex(0), fK0sCPA(0), fK0sBckgCPA(0), fK0sDCAV0Daug(0), fK0sBckgDCAV0Daug(0), fK0sNClustersTPC(0), fK0sBckgNClustersTPC(0), fK0sNClustersITSPos(0), fK0sNClustersITSNeg(0), fK0sBckgNClustersITSPos(0), fK0sBckgNClustersITSNeg(0),   
 
-  fLambdaPtPosDaug(0), fLambdaPtNegDaug(0), fLambdaBckgPtPosDaug(0), fLambdaBckgPtNegDaug(0), fLambdaPhiEtaPosDaug(0),fLambdaPhiEtaNegDaug(0), fLambdaBckgPhiEtaPosDaug(0),fLambdaBckgPhiEtaNegDaug(0), fLambdaDCAPosDaug(0),fLambdaDCANegDaug(0), fLambdaBckgDCAPosDaug(0), fLambdaBckgDCANegDaug(0), fLambdaDecayPos(0), fLambdaBckgDecayPos(0), fLambdaDecayVertex(0), fLambdaBckgDecayVertex(0), fLambdaCPA(0), fLambdaBckgCPA(0), fLambdaDCAV0Daug(0), fLambdaBckgDCAV0Daug(0), fLambdaNClustersTPC(0), fLambdaBckgNClustersTPC(0), fLambdaNClustersITSPos(0), fLambdaNClustersITSNeg(0), fLambdaBckgNClustersITSPos(0),  fLambdaBckgNClustersITSNeg(0),
+  fLambdaPtPosDaug(0), fLambdaPtNegDaug(0), fLambdaBckgPtPosDaug(0), fLambdaBckgPtNegDaug(0), fLambdaPhiEtaPosDaug(0),fLambdaPhiEtaNegDaug(0), fLambdaBckgPhiEtaPosDaug(0), fLambdaBckgPhiEtaNegDaug(0), fLambdaDCAPosDaug(0),fLambdaDCANegDaug(0), fLambdaBckgDCAPosDaug(0), fLambdaBckgDCANegDaug(0), fLambdaDecayPos(0), fLambdaBckgDecayPos(0), fLambdaDecayVertex(0), fLambdaBckgDecayVertex(0), fLambdaCPA(0), fLambdaBckgCPA(0), fLambdaDCAV0Daug(0), fLambdaBckgDCAV0Daug(0), fLambdaNClustersTPC(0), fLambdaBckgNClustersTPC(0), fLambdaNClustersITSPos(0), fLambdaNClustersITSNeg(0), fLambdaBckgNClustersITSPos(0),  fLambdaBckgNClustersITSNeg(0),
 
   fAntiLambdaPtPosDaug(0), fAntiLambdaPtNegDaug(0), fAntiLambdaBckgPtPosDaug(0), fAntiLambdaBckgPtNegDaug(0), fAntiLambdaPhiEtaPosDaug(0),fAntiLambdaPhiEtaNegDaug(0), fAntiLambdaBckgPhiEtaPosDaug(0),fAntiLambdaBckgPhiEtaNegDaug(0), fAntiLambdaDCAPosDaug(0),fAntiLambdaDCANegDaug(0), fAntiLambdaBckgDCAPosDaug(0), fAntiLambdaBckgDCANegDaug(0), fAntiLambdaDecayPos(0), fAntiLambdaBckgDecayPos(0), fAntiLambdaDecayVertex(0), fAntiLambdaBckgDecayVertex(0), fAntiLambdaCPA(0), fAntiLambdaBckgCPA(0), fAntiLambdaDCAV0Daug(0), fAntiLambdaBckgDCAV0Daug(0), fAntiLambdaNClustersTPC(0), fAntiLambdaBckgNClustersTPC(0), fAntiLambdaNClustersITSPos(0), fAntiLambdaNClustersITSNeg(0), fAntiLambdaBckgNClustersITSPos(0),  fAntiLambdaBckgNClustersITSNeg(0)
   
 {
   // Dummy Constructor
 
+  // variables for track splitting:
+  // shifted positionf for thw tracks
+  for(Int_t i=0; i<3; i++){
+    fTrigSftR125[i] = -9999.;
+    fDaugSftR125[i] = -9999.;     
+  }
+
   // Particles properties in MC
   for (Int_t i=0; i<kNCent; i++){ 
     
     // K0s
+    fK0sMCPtRapVtx[i] = 0;
+    fK0sMCPtRapVtxEmbeded[i] = 0;
     fK0sMCPtPhiEta[i] = 0;
     fK0sAssocPtPhiEta[i] = 0;
     // -- Natural particles
@@ -129,8 +141,19 @@ fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapVtx(0), fK0sMCPtRapEmbe
     fK0sAssocMassPtCPAEmbeded[i] = 0;
     fK0sAssocMassPtDCAPVEmbeded[i] = 0;
     fK0sAssocMassPtDaugNClsTPCEmbeded[i] = 0;
+    // -- Mass vs rapidity vs pt vs centrlaity
+    fK0sMassPtRap[i] = 0;
+    // -- Splitting checks
+    fK0sPosDaugSplCheckCovMat[i] = 0x0;
+    fK0sNegDaugSplCheckCovMat[i] = 0x0;
+    fK0sPosDaugdPhiSdEtaS[i] = 0x0;   
+    fK0sNegDaugdPhiSdEtaS[i] = 0x0;
+    fK0sPosMCResdEtaSdPhiS[i] = 0x0;
+    fK0sNegMCResdEtaSdPhiS[i] = 0x0;
 
     // Lambda
+    fLambdaMCPtRapVtx[i] = 0;
+    fLambdaMCPtRapVtxEmbeded[i] = 0;
     fLambdaMCPtPhiEta[i] = 0;
     fLambdaAssocPtPhiEta[i] = 0;
     // -- Natural particles
@@ -149,8 +172,19 @@ fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapVtx(0), fK0sMCPtRapEmbe
     fLambdaAssocMassPtCPAEmbeded[i] = 0;
     fLambdaAssocMassPtDCAPVEmbeded[i] = 0;
     fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
+    // -- Mass vs rapidity vs pt vs centrlaity
+    fLambdaMassPtRap[i] = 0;
+    // -- Splitting checks
+    fLambdaPosDaugSplCheckCovMat[i] = 0x0;
+    fLambdaNegDaugSplCheckCovMat[i] =0x0;
+    fLambdaPosDaugdPhiSdEtaS[i] = 0x0;
+    fLambdaNegDaugdPhiSdEtaS[i] = 0x0;
+    fLambdaPosMCResdEtaSdPhiS[i] = 0x0;
+    fLambdaNegMCResdEtaSdPhiS[i] = 0x0;
 
     // AntiLambda
+    fAntiLambdaMCPtRapVtx[i] = 0;
+    fAntiLambdaMCPtRapVtxEmbeded[i] = 0;
     fAntiLambdaMCPtPhiEta[i] = 0;
     fAntiLambdaAssocPtPhiEta[i] = 0;
     // -- Natural particles
@@ -169,6 +203,16 @@ fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapVtx(0), fK0sMCPtRapEmbe
     fAntiLambdaAssocMassPtCPAEmbeded[i] = 0;
     fAntiLambdaAssocMassPtDCAPVEmbeded[i] = 0;
     fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
+    // -- Mass vs rapidity vs pt vs centrlaity
+    fAntiLambdaMassPtRap[i] = 0;
+    // -- Splitting checks
+    fAntiLambdaPosDaugSplCheckCovMat[i] = 0x0;
+    fAntiLambdaNegDaugSplCheckCovMat[i] = 0x0;
+    fAntiLambdaPosDaugdPhiSdEtaS[i] = 0x0;
+    fAntiLambdaNegDaugdPhiSdEtaS[i] = 0x0;
+    fAntiLambdaPosMCResdEtaSdPhiS[i] = 0x0;
+    fAntiLambdaNegMCResdEtaSdPhiS[i] = 0x0;
+
   }
 
   // Correlations in MC
@@ -181,15 +225,6 @@ fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapVtx(0), fK0sMCPtRapEmbe
     fAntiLambdadPhidEtaMC[i] = 0;
   }
 
-  for (Int_t i=0; i<kNCent*kN2; i++){ 
-    // Xi-: associated particle
-    fXiMinusdPhidEtaMC[i] = 0;    // Pt of Trigger particle as in the analysis
-    fXiMinusdPhidEtaMC2[i] = 0;   // Higher Pt of Trigger particle
-  }
-
-  for (Int_t i=0; i<kNCent*kN3; i++)
-    fXiMinusdPhidEtaMC3[i] = 0;   // Xi is the leading particle in the event
-
   // Correlations
   for (Int_t i=0; i<(kNCent*kN1*kNVtxZ); i++){     
     // K0s
@@ -200,10 +235,6 @@ fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapVtx(0), fK0sMCPtRapEmbe
     fAntiLambdadPhidEtaPtL[i] = 0;  
   }
 
-  // Gamma Conversion correlation
-  for (Int_t i=0; i<kNCent; i++)
-    fGammaConversiondPhidEta[i] = 0;
-
   // Mixed events distributions
   for (Int_t i=0; i<(kN1*kNVtxZ*kNCent); i++){ 
     fK0sdPhidEtaME[i] = 0;
@@ -254,12 +285,7 @@ AliAnalysisTaskLambdaOverK0sJets::~AliAnalysisTaskLambdaOverK0sJets()
     delete fAssocPartMC;
     fAssocPartMC=0x0;
   }
-  
-  if(fXiTriggerPartMC) {
-    delete fXiTriggerPartMC;
-    fXiTriggerPartMC=0x0;
-  }
-
     
 }
 
@@ -296,16 +322,16 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fEvents->GetXaxis()->SetBinLabel(2,"AOD available");
   fEvents->GetXaxis()->SetBinLabel(3,"CINT1B");
   fEvents->GetXaxis()->SetBinLabel(4,"V0M Cent");
-  fEvents->GetXaxis()->SetBinLabel(5,"Vtx > 3 part");
-  fEvents->GetXaxis()->SetBinLabel(6,"|VtxZ| < 10 cm");
-  fEvents->GetXaxis()->SetBinLabel(7,"Mult && Cent");
-  fEvents->GetXaxis()->SetBinLabel(8,"Bad ID Trigger");
+  fEvents->GetXaxis()->SetBinLabel(5,"Global Vtx > 3 part");
+  fEvents->GetXaxis()->SetBinLabel(6,"SPD Vtx > 3 part");
+  fEvents->GetXaxis()->SetBinLabel(7,"|ZVtx Global - Zvtx SPD| < 0.5 cm");
+  fEvents->GetXaxis()->SetBinLabel(8,"|VtxZ| < 10 cm");
   fEvents->GetXaxis()->SetBinLabel(9,"V0 is LP");
-  fEvents->GetXaxis()->SetBinLabel(10,"Trigger is V0 daug");
-  fEvents->GetXaxis()->SetBinLabel(11,"Trigger is V0 daug && 2nd check");
+  fEvents->GetXaxis()->SetBinLabel(10," ");
+  fEvents->GetXaxis()->SetBinLabel(11," ");
   fEvents->GetXaxis()->SetBinLabel(12,"Triggered");
   fEvents->GetXaxis()->SetBinLabel(13,"NOT Triggered");
-  fEvents->GetXaxis()->SetBinLabel(14,"V0 is LP in MC");
+  fEvents->GetXaxis()->SetBinLabel(14," ");
   fEvents->GetYaxis()->SetTitle("Counts"); 
   fOutput->Add(fEvents);
 
@@ -323,6 +349,9 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fOutput->Add(fCentralityTrig);
 
   // Primary Vertex:
+  fPrimayVtxGlobalvsSPD = new TH2F("fPrimayVtxGlobalvsSPD",";Z_{vtx,tr} (cm);Z_{SPD,tr} (cm)",200,-20,20,200,-20,20);
+  fOutput->Add(fPrimayVtxGlobalvsSPD);
+
   fPrimaryVertexX = new TH1F("fPrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
   fOutput->Add(fPrimaryVertexX);
   
@@ -344,13 +373,13 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     fTriggerMCPtCent = new TH2F("fTriggerMCPtCent","Trigger particle MC;#it{p}_{T} (GeV/#it{c});centrality (%)",2*nbinPtLP,pMin,2*ptMaxLP,100,0.,100.);
     fOutput->Add(fTriggerMCPtCent);
 
-    fTriggerMCResPt = new TH3F("fTriggerMCResPt","Trigger particle MC: p_{t} resolution;(p_{t,MC}-p_{t,Rec})/p_{t,Rec};p_{t} (GeV/#it{c});centrality",60,-0.3,0.3,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
+    fTriggerMCResPt = new TH3F("fTriggerMCResPt","Trigger particle MC: #it{p}_{T} resolution;(p_{t,MC}-p_{t,Rec})/p_{t,Rec};#it{p}_{T} (GeV/#it{c});centrality",60,-0.3,0.3,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
     fOutput->Add(fTriggerMCResPt);
 
-    fTriggerMCResEta = new TH3F("fTriggerMCResEta","Trigger particle MC: #eta resolution; #eta_{MC}-#eta_{Rec};p_{t} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
+    fTriggerMCResEta = new TH3F("fTriggerMCResEta","Trigger particle MC: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
     fOutput->Add(fTriggerMCResEta);
 
-    fTriggerMCResPhi = new TH3F("fTriggerMCResPhi","Trigger particle MC: #varphi resolution; #varphi_{MC}-#varphi_{Rec};p_{t} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
+    fTriggerMCResPhi = new TH3F("fTriggerMCResPhi","Trigger particle MC: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
     fOutput->Add(fTriggerMCResPhi);
   }
 
@@ -358,6 +387,9 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fTriggerPtCent = new TH3F("fTriggerPtCent","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
   fOutput->Add(fTriggerPtCent);
 
+  fTriggerPtCentCh = new TH3F("fTriggerPtCentCh","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
+  fOutput->Add(fTriggerPtCentCh);
+
   fNTrigPerEvt = new TH2F("fNTrigPerEvt","Number of Trigger Particles Per Event;Counts;Centrality",51,-0.5,50.5,100,0.,100);
   fOutput->Add(fNTrigPerEvt);
 
@@ -383,7 +415,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fTriggerIsV0 = new TH1F("fTriggerIsV0","V0 candidate is a LP;#it{p}_{T} (GeV/#it{c});Counts",nbinPtLP,pMin,ptMaxLP);
   fOutput->Add(fTriggerIsV0);
 
-  // ------------------- > Comaring properties of this trigger with the daughters
+  // ------------------- > Comparing properties of this trigger with the daughters
   //   K0s
   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.);
   fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(1,"Pos Daug X");
@@ -404,7 +436,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
   fOutput->Add(fCheckIDTrigEtaK0s);
 
-  fCheckIDTrigNclsK0s = new TH3F("fCheckIDTrigNclsK0s","K^{0}_{S};NCls TPC;;p_{V0}",131,49.5,180.5,3,-0.5,2.5,100,1.,11.);
+  fCheckIDTrigNclsK0s = new TH3F("fCheckIDTrigNclsK0s","K^{0}_{S};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
   fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
   fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
   fOutput->Add(fCheckIDTrigNclsK0s);
@@ -429,7 +461,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
   fOutput->Add(fCheckIDTrigEtaLambda);
 
-  fCheckIDTrigNclsLambda = new TH3F("fCheckIDTrigNclsLambda","#Lambda;NCls TPC;;p_{V0}",131,49.5,180.5,3,-0.5,2.5,100,1.,11.);
+  fCheckIDTrigNclsLambda = new TH3F("fCheckIDTrigNclsLambda","#Lambda;NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
   fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
   fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
   fOutput->Add(fCheckIDTrigNclsLambda);
@@ -454,7 +486,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
   fOutput->Add(fCheckIDTrigEtaAntiLambda);
 
-  fCheckIDTrigNclsAntiLambda = new TH3F("fCheckIDTrigNclsAntiLambda","#bar{#Lambda};NCls TPC;;p_{V0}",131,49.5,180.5,3,-0.5,2.5,100,1.,11.);
+  fCheckIDTrigNclsAntiLambda = new TH3F("fCheckIDTrigNclsAntiLambda","#bar{#Lambda};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
   fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
   fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
   fOutput->Add(fCheckIDTrigNclsAntiLambda);
@@ -477,14 +509,20 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     fK0sMCPtRap2   = new TH3F("fK0sMCPtRap2", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
     fOutput->Add(fK0sMCPtRap2);
 
-    fK0sMCPtRapVtx = new TH3F("fK0sMCPtRapVtx", "K^{0}_{S} MC  |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});VtxZ;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
-    fOutput->Add(fK0sMCPtRapVtx);
+    for(Int_t jj=0;jj<kNCent;jj++){
+      snprintf(hNameHist,100, "fK0sMCPtRapVtx_Cent_%d",jj);
+      fK0sMCPtRapVtx[jj] = new TH3F(hNameHist, "K^{0}_{S} MC  |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+      fOutput->Add(fK0sMCPtRapVtx[jj]);
+    }
 
     fK0sMCPtRapEmbeded   = new TH3F("fK0sMCPtRapEmbeded", "K^{0}_{S} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.,1.,100,0.,100.);
     fOutput->Add(fK0sMCPtRapEmbeded);
 
-    fK0sMCPtRapVtxEmbeded = new TH3F("fK0sMCPtRapVtxEmbeded", "K^{0}_{S} Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});VtxZ;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
-    fOutput->Add(fK0sMCPtRapVtxEmbeded);
+    for(Int_t jj=0;jj<kNCent;jj++){
+      snprintf(hNameHist,100, "fK0sMCPtRapVtxEmbeded_Cent_%d",jj);
+      fK0sMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist, "K^{0}_{S} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+      fOutput->Add(fK0sMCPtRapVtxEmbeded[jj]);
+    }
   
     for(Int_t jj=0;jj<kNCent;jj++){
       snprintf(hNameHist,100, "fK0sMCPtPhiEta_Cent_%d",jj);
@@ -513,59 +551,65 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
       fOutput->Add(fK0sAssocPtPhiEta[jj]);
     }
 
+
     // Histogramas para estudios sistematicos de la eficiencia
+    Int_t binsEff1[3] = {nbins,nbins,20};          Double_t xminEff1[3] = {0.398,pMin,-1.0};          Double_t xmaxEff1[3] = {0.598,pMax,1.0};             // gral efficiency
+    Int_t binsEff2[4] = {nbins,nbins,20,10};       Double_t xminEff2[4] = {0.398,pMin,-1.0,-10.};     Double_t xmaxEff2[4] = {0.598,pMax,1.0,10.};         // vtx cut
+    Int_t binsEff3[4] = {nbins,nbins,20,60};       Double_t xminEff3[4] = {0.398,pMin,-1.0,0.};       Double_t xmaxEff3[4] = {0.598,pMax,1.0,1.2};         // dca between daughters
+    Int_t binsEff4[4] = {nbins,nbins,20,50};       Double_t xminEff4[4] = {0.398,pMin,-1.0,0.9975};   Double_t xmaxEff4[4] = {0.598,pMax,1.0,1.};          // cpa
+    Int_t binsEff5[5] = {nbins,nbins,20,99,99};    Double_t xminEff5[5] = {0.398,pMin,-1.0,0.,0.};    Double_t xmaxEff5[5] = {0.598,pMax,1.0,3.3,3.3};     // dca to prim. vtx
+    Int_t binsEff6[5] = {nbins,nbins,20,170,170};  Double_t xminEff6[5] = {0.398,pMin,-1.0,0.5,0.5};  Double_t xmaxEff6[5] = {0.598,pMax,1.0,170.5,170};   // No. TPC Cls
+
     for(Int_t i=0; i<kNCent; i++){
      
       /// ------- Natural particles
       snprintf(hNameHist,100, "fK0sAssocPtMassArm_Cent_%d",i);
-      fK0sAssocPtMassArm[i]    = new TH3F(hNameHist,"K^{0}_{S} Assoc;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap",nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
+      fK0sAssocPtMassArm[i]    = new THnSparseD(hNameHist,"K^{0}_{S} Assoc;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
       fOutput->Add(fK0sAssocPtMassArm[i]);
 
       snprintf(hNameHist,100, "fK0sAssocMassPtVtx_Cent_%d",i);
-      fK0sAssocMassPtVtx[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; VtxZ",nbins,0.398,0.598,nbins,pMin,pMax,20,-10.,10.);
+      fK0sAssocMassPtVtx[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
       fOutput->Add(fK0sAssocMassPtVtx[i]);      
 
       snprintf(hNameHist,100, "fK0sAssocMassPtDCADaug_Cent_%d",i);
-      fK0sAssocMassPtDCADaug[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCADaug",nbins,0.398,0.598,nbins,pMin,pMax,60,0,1.2);
+      fK0sAssocMassPtDCADaug[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
       fOutput->Add(fK0sAssocMassPtDCADaug[i]); 
 
       snprintf(hNameHist,100, "fK0sAssocMassPtCPA_Cent_%d",i);
-      fK0sAssocMassPtCPA[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; CPA",nbins,0.398,0.598,nbins,pMin,pMax,25,0.9975,1.);
+      fK0sAssocMassPtCPA[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
       fOutput->Add(fK0sAssocMassPtCPA[i]);  
-
+      
       snprintf(hNameHist,100, "fK0sAssocMassPtDCAPV_Cent_%d",i);
-      fK0sAssocMassPtDCAPV[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+      fK0sAssocMassPtDCAPV[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
       fOutput->Add(fK0sAssocMassPtDCAPV[i]);  
-
-
+     
       snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPC_Cent_%d",i);
-      fK0sAssocMassPtDaugNClsTPC[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; # TPC Cls",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+      fK0sAssocMassPtDaugNClsTPC[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
       fOutput->Add(fK0sAssocMassPtDaugNClsTPC[i]); 
 
       /// ----- Embeded particles 
       snprintf(hNameHist,100, "fK0sAssocPtMassArmEmbeded_Cent_%d",i);
-      fK0sAssocPtMassArmEmbeded[i]    = new TH3F(hNameHist,"K^{0}_{S} Assoc Embeded;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap",nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
+      fK0sAssocPtMassArmEmbeded[i]    = new THnSparseD(hNameHist,"K^{0}_{S} Assoc Embeded;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
       fOutput->Add(fK0sAssocPtMassArmEmbeded[i]);
 
       snprintf(hNameHist,100, "fK0sAssocMassPtVtxEmbeded_Cent_%d",i);
-      fK0sAssocMassPtVtxEmbeded[i]  = new TH3F(hNameHist, "K^{0}_{S} Embeded; mass; #it{p}_{T}; VtxZ",nbins,0.398,0.598,nbins,pMin,pMax,20,-10.,10.);
+      fK0sAssocMassPtVtxEmbeded[i]  = new THnSparseD(hNameHist, "K^{0}_{S} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
       fOutput->Add(fK0sAssocMassPtVtxEmbeded[i]);      
 
       snprintf(hNameHist,100, "fK0sAssocMassPtDCADaugEmbeded_Cent_%d",i);
-      fK0sAssocMassPtDCADaugEmbeded[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCADaug",nbins,0.398,0.598,nbins,pMin,pMax,60,0,1.2);
+      fK0sAssocMassPtDCADaugEmbeded[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
       fOutput->Add(fK0sAssocMassPtDCADaugEmbeded[i]); 
 
       snprintf(hNameHist,100, "fK0sAssocMassPtCPAEmbeded_Cent_%d",i);
-      fK0sAssocMassPtCPAEmbeded[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; CPA",nbins,0.398,0.598,nbins,pMin,pMax,25,0.9975,1.);
+      fK0sAssocMassPtCPAEmbeded[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
       fOutput->Add(fK0sAssocMassPtCPAEmbeded[i]);  
 
       snprintf(hNameHist,100, "fK0sAssocMassPtDCAPVEmbeded_Cent_%d",i);
-      fK0sAssocMassPtDCAPVEmbeded[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+      fK0sAssocMassPtDCAPVEmbeded[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
       fOutput->Add(fK0sAssocMassPtDCAPVEmbeded[i]);  
 
-
       snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
-      fK0sAssocMassPtDaugNClsTPCEmbeded[i]  = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; # TPC Cls",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+      fK0sAssocMassPtDaugNClsTPCEmbeded[i]  = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
       fOutput->Add(fK0sAssocMassPtDaugNClsTPCEmbeded[i]); 
 
     }
@@ -576,6 +620,27 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     fK0sMCResPhi     = new TH3F("fK0sMCResPhi","K^{0}_{S} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
     fOutput->Add(fK0sMCResPhi);
 
+    fK0sMCResPt     = new TH3F("fK0sMCResPt","K^{0}_{S} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fK0sMCResPt);
+
+    fK0sPosMCResEta     = new TH3F("fK0sPosMCResEta","K^{0}_{S} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fK0sPosMCResEta);
+
+    fK0sPosMCResPhi     = new TH3F("fK0sPosMCResPhi","K^{0}_{S}  Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fK0sPosMCResPhi);
+
+    fK0sPosMCResPt     = new TH3F("fK0sPosMCResPt","K^{0}_{S}  Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fK0sPosMCResPt);  
+
+    fK0sNegMCResEta     = new TH3F("fK0sNegMCResEta","K^{0}_{S} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fK0sNegMCResEta);
+
+    fK0sNegMCResPhi     = new TH3F("fK0sNegMCResPhi","K^{0}_{S}  Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fK0sNegMCResPhi);
+
+    fK0sNegMCResPt     = new TH3F("fK0sNegMCResPt","K^{0}_{S}  Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fK0sNegMCResPt);  
+
     // Lambda MC-true: 
     fLambdaMCPt = new TH1F("fLambdaMCPt","#Lambda MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
     fOutput->Add(fLambdaMCPt);
@@ -586,14 +651,20 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     fLambdaMCPtRap2 = new TH3F("fLambdaMCPtRap2","#Lambda MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
     fOutput->Add(fLambdaMCPtRap2);
 
-    fLambdaMCPtRapVtx = new TH3F("fLambdaMCPtRapVtx","#Lambda MC  |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
-    fOutput->Add(fLambdaMCPtRapVtx);
+    for(Int_t jj=0;jj<kNCent;jj++){
+      snprintf(hNameHist,100, "fLambdaMCPtRapVtx_Cent_%d",jj);
+      fLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#Lambda MC  |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+      fOutput->Add(fLambdaMCPtRapVtx[jj]);
+    }
 
     fLambdaMCPtRapEmbeded = new TH3F("fLambdaMCPtRapEmbeded","#Lambda Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
     fOutput->Add(fLambdaMCPtRapEmbeded);
   
-    fLambdaMCPtRapVtxEmbeded = new TH3F("fLambdaMCPtRapVtxEmbeded","#Lambda Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
-    fOutput->Add(fLambdaMCPtRapVtxEmbeded);
+    for(Int_t jj=0;jj<kNCent;jj++){
+      snprintf(hNameHist,100, "fLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
+      fLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#Lambda Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+      fOutput->Add(fLambdaMCPtRapVtxEmbeded[jj]);
+    }
 
     fLambdaMCFromXi  = new TH2F("fLambdaMCFromXi", "#Lambda from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
     fOutput->Add(fLambdaMCFromXi);
@@ -622,64 +693,71 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     }
     
     // Histogramas para estudios sistematicos de la eficiencia
+    Int_t binsEff7[3] = {nbins,nbins,20};          Double_t xminEff7[3] = {1.065,pMin,-1.0};           Double_t xmaxEff7[3] = {1.165,pMax,1.0};        // gral efficiency
+    Int_t binsEff8[4] = {nbins,nbins,20,10};       Double_t xminEff8[4] = {1.065,pMin,-1.0,-10.};      Double_t xmaxEff8[4] = {1.165,pMax,1.0,10.};    // vtx
+    Int_t binsEff9[4] = {nbins,nbins,20,60};       Double_t xminEff9[4] = {1.065,pMin,-1.0,0.};        Double_t xmaxEff9[4] = {1.165,pMax,1.0,1.2};    // dca between daughters
+    Int_t binsEff10[4] = {nbins,nbins,20,50};      Double_t xminEff10[4] = {1.065,pMin,-1.0,0.9975};   Double_t xmaxEff10[4] = {1.165,pMax,1.0,1.};    // cpa
+    Int_t binsEff11[5] = {nbins,nbins,20,99,99};   Double_t xminEff11[5] = {1.065,pMin,-1.0,0.,0.};    Double_t xmaxEff11[5] = {1.165,pMax,1.0,3.3,3.3};   // dca to prim. vtx
+    Int_t binsEff12[5] = {nbins,nbins,20,170,170}; Double_t xminEff12[5] = {1.065,pMin,-1.0,0.5,0.5};  Double_t xmaxEff12[5] = {1.165,pMax,1.0,170.5,170.5};   // No. TPC Cls
+
     for(Int_t i=0; i<kNCent; i++){
+
       // --------- Natural particles
       snprintf(hNameHist,100, "fLambdaAssocMassPtRap_Cent_%d",i);
-      fLambdaAssocMassPtRap[i]  = new TH3F(hNameHist, "#Lambda: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fLambdaAssocMassPtRap[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
       fOutput->Add(fLambdaAssocMassPtRap[i]);      
-    
+
       snprintf(hNameHist,100, "fLambdaAssocMassPtRap2_Cent_%d",i);
-      fLambdaAssocMassPtRap2[i]  = new TH3F(hNameHist, "#Lambda: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fLambdaAssocMassPtRap2[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
       fOutput->Add(fLambdaAssocMassPtRap2[i]);     
-  
+      
       snprintf(hNameHist,100, "fLambdaAssocMassPtVtx_Cent_%d",i);
-      fLambdaAssocMassPtVtx[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+      fLambdaAssocMassPtVtx[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
       fOutput->Add(fLambdaAssocMassPtVtx[i]);      
-
+     
       snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaug_Cent_%d",i);
-      fLambdaAssocMassPtDCADaug[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+      fLambdaAssocMassPtDCADaug[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
       fOutput->Add(fLambdaAssocMassPtDCADaug[i]); 
-
+     
       snprintf(hNameHist,100, "fLambdaAssocMassPtCPA_Cent_%d",i);
-      fLambdaAssocMassPtCPA[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+      fLambdaAssocMassPtCPA[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
       fOutput->Add(fLambdaAssocMassPtCPA[i]);  
-
+    
       snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPV_Cent_%d",i);
-      fLambdaAssocMassPtDCAPV[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+      fLambdaAssocMassPtDCAPV[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
       fOutput->Add(fLambdaAssocMassPtDCAPV[i]);  
 
       snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
-      fLambdaAssocMassPtDaugNClsTPC[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+      fLambdaAssocMassPtDaugNClsTPC[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
       fOutput->Add(fLambdaAssocMassPtDaugNClsTPC[i]); 
 
       // ------------ Embeded particles
       snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded_Cent_%d",i);
-      fLambdaAssocMassPtRapEmbeded[i]  = new TH3F(hNameHist, "#Lambda Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fLambdaAssocMassPtRapEmbeded[i]  = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
       fOutput->Add(fLambdaAssocMassPtRapEmbeded[i]);  
 
       snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
-      fLambdaAssocMassPtRapEmbeded2[i]  = new TH3F(hNameHist, "#Lambda Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fLambdaAssocMassPtRapEmbeded2[i]  = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
       fOutput->Add(fLambdaAssocMassPtRapEmbeded2[i]);    
 
       snprintf(hNameHist,100, "fLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
-      fLambdaAssocMassPtVtxEmbeded[i]  = new TH3F(hNameHist, "#Lambda Embeded; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+      fLambdaAssocMassPtVtxEmbeded[i]  = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
       fOutput->Add(fLambdaAssocMassPtVtxEmbeded[i]);      
 
       snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
-      fLambdaAssocMassPtDCADaugEmbeded[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+      fLambdaAssocMassPtDCADaugEmbeded[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
       fOutput->Add(fLambdaAssocMassPtDCADaugEmbeded[i]); 
-
       snprintf(hNameHist,100, "fLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
-      fLambdaAssocMassPtCPAEmbeded[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+      fLambdaAssocMassPtCPAEmbeded[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
       fOutput->Add(fLambdaAssocMassPtCPAEmbeded[i]);  
 
       snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
-      fLambdaAssocMassPtDCAPVEmbeded[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+      fLambdaAssocMassPtDCAPVEmbeded[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
       fOutput->Add(fLambdaAssocMassPtDCAPVEmbeded[i]);  
 
-
       snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
-      fLambdaAssocMassPtDaugNClsTPCEmbeded[i]  = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+      fLambdaAssocMassPtDaugNClsTPCEmbeded[i]  = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;  Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
       fOutput->Add(fLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
     } 
 
@@ -689,6 +767,27 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     fLambdaMCResPhi     = new TH3F("fLambdaMCResPhi","#Lambda Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
     fOutput->Add(fLambdaMCResPhi);
 
+    fLambdaMCResPt     = new TH3F("fLambdaMCResPt","#Lambda Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fLambdaMCResPt);
+
+    fLambdaPosMCResEta     = new TH3F("fLambdaPosMCResEta","#Lambda Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fLambdaPosMCResEta);
+
+    fLambdaPosMCResPhi     = new TH3F("fLambdaPosMCResPhi","#Lambda  Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fLambdaPosMCResPhi);
+
+    fLambdaPosMCResPt     = new TH3F("fLambdaPosMCResPt","#Lambda  Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fLambdaPosMCResPt);  
+
+    fLambdaNegMCResEta     = new TH3F("fLambdaNegMCResEta","#Lambda Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fLambdaNegMCResEta);
+
+    fLambdaNegMCResPhi     = new TH3F("fLambdaNegMCResPhi","#Lambda  Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fLambdaNegMCResPhi);
+
+    fLambdaNegMCResPt     = new TH3F("fLambdaNegMCResPt","#Lambda  Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fLambdaNegMCResPt);  
+
     // AntiLambda MC-true: 
     fAntiLambdaMCPt = new TH1F("fAntiLambdaMCPt","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
     fOutput->Add(fAntiLambdaMCPt);
@@ -699,14 +798,20 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     fAntiLambdaMCPtRap2 = new TH3F("fAntiLambdaMCPtRap2","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
     fOutput->Add(fAntiLambdaMCPtRap2);
 
-    fAntiLambdaMCPtRapVtx = new TH3F("fAntiLambdaMCPtRapVtx","#bar{#Lambda} MC |VtxZ|<3;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
-    fOutput->Add(fAntiLambdaMCPtRapVtx);  
+    for(Int_t jj=0;jj<kNCent;jj++){
+      snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtx_Cent_%d",jj);
+      fAntiLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#bar{#Lambda} MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+      fOutput->Add(fAntiLambdaMCPtRapVtx[jj]);  
+    }
 
     fAntiLambdaMCPtRapEmbeded = new TH3F("fAntiLambdaMCPtRapEmbeded","#bar{#Lambda} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
     fOutput->Add(fAntiLambdaMCPtRapEmbeded);
     
-    fAntiLambdaMCPtRapVtxEmbeded = new TH3F("fAntiLambdaMCPtRapVtxEmbeded","#bar{#Lambda} Embeded MC |VtxZ|<3;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
-    fOutput->Add(fAntiLambdaMCPtRapVtxEmbeded); 
+    for(Int_t jj=0;jj<kNCent;jj++){
+      snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
+      fAntiLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#bar{#Lambda} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+      fOutput->Add(fAntiLambdaMCPtRapVtxEmbeded[jj]); 
+    }
 
     fAntiLambdaMCFromXi  = new TH2F("fAntiLambdaMCFromXi", "#bar{#Lambda} from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
     fOutput->Add(fAntiLambdaMCFromXi);
@@ -735,64 +840,70 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     }
 
     // Histogramas para estudios sistematicos de la eficiencia
+    Int_t binsEff13[3] = {nbins,nbins,20};          Double_t xminEff13[3] = {1.065,pMin,-1.0};          Double_t xmaxEff13[3] = {1.165,pMax,1.0};              // gral efficiency
+    Int_t binsEff14[4] = {nbins,nbins,20,10};       Double_t xminEff14[4] = {1.065,pMin,-1.0,-10.};     Double_t xmaxEff14[4] = {1.165,pMax,1.0,10.};          // vtx
+    Int_t binsEff15[4] = {nbins,nbins,20,60};       Double_t xminEff15[4] = {1.065,pMin,-1.0,0.};       Double_t xmaxEff15[4] = {1.165,pMax,1.0,1.2};          // dca between daug
+    Int_t binsEff16[4] = {nbins,nbins,20,50};       Double_t xminEff16[4] = {1.065,pMin,-1.0,0.9975};   Double_t xmaxEff16[4] = {1.165,pMax,1.0,1.};           // cpa
+    Int_t binsEff17[5] = {nbins,nbins,20,99,99};    Double_t xminEff17[5] = {1.065,pMin,-1.0,0.,0.};    Double_t xmaxEff17[5] = {1.165,pMax,1.0,3.3,3.3};      // dca to prim. vtx
+    Int_t binsEff18[5] = {nbins,nbins,20,170,170};  Double_t xminEff18[5] = {1.065,pMin,-1.0,0.5,0.5};  Double_t xmaxEff18[5] = {1.165,pMax,1.0,170.5,170.5};  // No. TPC Cls
+
     for(Int_t i=0; i<kNCent; i++){
       // --------- Natural particles
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap_Cent_%d",i);
-      fAntiLambdaAssocMassPtRap[i]  = new TH3F(hNameHist, "#bar{#Lambda}: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fAntiLambdaAssocMassPtRap[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
       fOutput->Add(fAntiLambdaAssocMassPtRap[i]);      
   
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap2_Cent_%d",i);
-      fAntiLambdaAssocMassPtRap2[i]  = new TH3F(hNameHist, "#bar{#Lambda}: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fAntiLambdaAssocMassPtRap2[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
       fOutput->Add(fAntiLambdaAssocMassPtRap2[i]); 
-    
+      
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtx_Cent_%d",i);
-      fAntiLambdaAssocMassPtVtx[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+      fAntiLambdaAssocMassPtVtx[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
       fOutput->Add(fAntiLambdaAssocMassPtVtx[i]);      
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaug_Cent_%d",i);
-      fAntiLambdaAssocMassPtDCADaug[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+      fAntiLambdaAssocMassPtDCADaug[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
       fOutput->Add(fAntiLambdaAssocMassPtDCADaug[i]); 
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPA_Cent_%d",i);
-      fAntiLambdaAssocMassPtCPA[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+      fAntiLambdaAssocMassPtCPA[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
       fOutput->Add(fAntiLambdaAssocMassPtCPA[i]);  
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPV_Cent_%d",i);
-      fAntiLambdaAssocMassPtDCAPV[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+      fAntiLambdaAssocMassPtDCAPV[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
       fOutput->Add(fAntiLambdaAssocMassPtDCAPV[i]);  
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
-      fAntiLambdaAssocMassPtDaugNClsTPC[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+      fAntiLambdaAssocMassPtDaugNClsTPC[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;  Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
       fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPC[i]); 
 
       // ------------ Embeded particles
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded_Cent_%d",i);
-      fAntiLambdaAssocMassPtRapEmbeded[i]  = new TH3F(hNameHist, "#bar{#Lambda} Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fAntiLambdaAssocMassPtRapEmbeded[i]  = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
       fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded[i]);    
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
-      fAntiLambdaAssocMassPtRapEmbeded2[i]  = new TH3F(hNameHist, "#bar{#Lambda} Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+      fAntiLambdaAssocMassPtRapEmbeded2[i]  = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
       fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded2[i]);    
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
-      fAntiLambdaAssocMassPtVtxEmbeded[i]  = new TH3F(hNameHist, "#bar{#Lambda} Embeded; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+      fAntiLambdaAssocMassPtVtxEmbeded[i]  = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
       fOutput->Add(fAntiLambdaAssocMassPtVtxEmbeded[i]);      
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
-      fAntiLambdaAssocMassPtDCADaugEmbeded[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+      fAntiLambdaAssocMassPtDCADaugEmbeded[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
       fOutput->Add(fAntiLambdaAssocMassPtDCADaugEmbeded[i]); 
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
-      fAntiLambdaAssocMassPtCPAEmbeded[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+      fAntiLambdaAssocMassPtCPAEmbeded[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
       fOutput->Add(fAntiLambdaAssocMassPtCPAEmbeded[i]);  
 
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
-      fAntiLambdaAssocMassPtDCAPVEmbeded[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+      fAntiLambdaAssocMassPtDCAPVEmbeded[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
       fOutput->Add(fAntiLambdaAssocMassPtDCAPVEmbeded[i]);  
 
-
       snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
-      fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i]  = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+      fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i]  = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;  Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
       fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
     } 
 
@@ -802,6 +913,27 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     fAntiLambdaMCResPhi     = new TH3F("fAntiLambdaMCResPhi","#bar{#Lambda} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
     fOutput->Add(fAntiLambdaMCResPhi);
 
+    fAntiLambdaMCResPt     = new TH3F("fAntiLambdaMCResPt","#bar{#Lambda} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fAntiLambdaMCResPt);
+
+    fAntiLambdaPosMCResEta     = new TH3F("fAntiLambdaPosMCResEta","#bar{#Lambda} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fAntiLambdaPosMCResEta);
+
+    fAntiLambdaPosMCResPhi     = new TH3F("fAntiLambdaPosMCResPhi","#bar{#Lambda}  Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fAntiLambdaPosMCResPhi);
+
+    fAntiLambdaPosMCResPt     = new TH3F("fAntiLambdaPosMCResPt","#bar{#Lambda}  Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fAntiLambdaPosMCResPt);  
+
+    fAntiLambdaNegMCResEta     = new TH3F("fAntiLambdaNegMCResEta","#bar{#Lambda} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fAntiLambdaNegMCResEta);
+
+    fAntiLambdaNegMCResPhi     = new TH3F("fAntiLambdaNegMCResPhi","#bar{#Lambda}  Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fAntiLambdaNegMCResPhi);
+
+    fAntiLambdaNegMCResPt     = new TH3F("fAntiLambdaNegMCResPt","#bar{#Lambda}  Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+    fOutput->Add(fAntiLambdaNegMCResPt);  
+
   } //End MC
 
   // ======================================================== //
@@ -818,11 +950,14 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fOutput->Add(fHistArmenterosPodolanski);
  
   fHistArmPodBckg =
-    new TH3F("fHistArmPodBckg","Background: Armenteros-Podolanski phase space;#alpha;p_{t} arm",
-             100,-1.0,1.0,50,0,0.5,4,-0.5,3.5);
-  fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S}: Trig events");
-  fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"#Lambda: Trig events");
-  fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#bar{#Lambda}: Trig events");
+    new TH3F("fHistArmPodBckg","Armenteros-Podolanski phase space for correlations;#alpha;p_{t} arm",
+             100,-1.0,1.0,50,0,0.5,6,-0.5,5.5);
+  fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S} SigBck: Trig events");
+  fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bck: Trig events");
+  fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#Lambda SigBck: Trig events");
+  fHistArmPodBckg->GetZaxis()->SetBinLabel(4,"#Lambda Bck: Trig events");
+  fHistArmPodBckg->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} SigBck: Trig events");
+  fHistArmPodBckg->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bck: Trig events");
   fOutput->Add(fHistArmPodBckg);
  
   // ****** K0s ******
@@ -838,23 +973,80 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fOutput->Add(fK0sMassEmbeded);
 
   fK0sMassPtEta =
-    new TH3F("fK0sMassPtEta","K^{0}_{s}: Mass vs #it{p}_{T} vs #eta;Mass;#it{p}_{T} (GeV/#it{c});#eta",
+    new TH3F("fK0sMassPtEta","K^{0}_{s}: Mass vs #it{p}_{T} vs #eta;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});#eta",
             nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
   fOutput->Add(fK0sMassPtEta);
  
-  fK0sMassPtRap =
-    new TH3F("fK0sMassPtRap","K^{0}_{s}: mass vs #it{p}_{T} vs yMass;#it{p}_{T} (GeV/#it{c});y",
-            nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
-  fOutput->Add(fK0sMassPtRap); 
+  for(Int_t i=0; i<kNCent; i++){
+    fK0sMassPtRap[i] =
+      new TH3F(Form("fK0sMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"K^{0}_{s}: mass vs #it{p}_{T} vs y;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});y",
+              nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
+    fOutput->Add(fK0sMassPtRap[i]);
+  } 
  
   fK0sMassPtPhi  =
     new TH3F("fK0sMassPtPhi","K^{0}_{s}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
              nbins,0.398,0.598,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
   fOutput->Add(fK0sMassPtPhi);
   
-  // Correlations:
+  // ================== Correlations =================
+
+  // ------------------------  Splitting:  
+  Double_t binsDev[121];
+  binsDev[0] = 0;
+
+  for (Int_t k=-7;k<=4;k++)
+    for (Int_t j=1;j<=10;j++)
+      binsDev[(k+7)*10+j] = j*TMath::Power(10,k);
+     
+  Int_t binsSplit[9] = {100,nbins,100,2,301,101,101,120,9};   Double_t xminSplit[9] = {pMin,0.398,pMin,-0.5,-0.001,-0.005,-0.005,0,-0.5}; Double_t xmaxSplit[9] = {pMax,0.598,pMax,1.5,0.3,1.005,1.005,10e+4,8.5};    
+
+  Int_t binsSplit2[12] = {100,nbins,100,2,10,20,101,101,100,120,99,2};   
+  Double_t xminSplit2[12] = {pMin,0.398,pMin,-0.5,0.,-0.1,-0.005,-0.005,-1.,0,0.,-0.5}; 
+  Double_t xmaxSplit2[12] = {pMax,0.598,pMax,1.5,0.1,0.1,1.005,1.005,1.,10e+4,3.3,1.5};    
+
+  Int_t binsSplit3[6] = {100,nbins,100,46,46,2};
+  Double_t xminSplit3[6] = {pMin,0.398,pMin,-0.16,-0.16,-0.5};
+  Double_t xmaxSplit3[6] = {pMax,0.598,pMax,0.16,0.16,1.5};
+
+  for(Int_t j=0; j<kNCent; j++){
+
+    // positive daughter
+    fK0sPosDaugSplCheckCovMat[j]   = new THnSparseD( Form("fK0sPosDaugSplCheckCovMat_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle;  R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+    fK0sPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+    fOutput->Add(fK0sPosDaugSplCheckCovMat[j]);  
+
+    // negative daughter
+    fK0sNegDaugSplCheckCovMat[j]   = new THnSparseD( Form("fK0sNegDaugSplCheckCovMat_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle;  R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+    fK0sNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+    fOutput->Add(fK0sNegDaugSplCheckCovMat[j]); 
+
+    // Positive daughter:
+    fK0sPosDaugdPhiSdEtaS[j]  = new THnSparseD(Form("fK0sPosDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+    fK0sPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);    
+    fOutput->Add(fK0sPosDaugdPhiSdEtaS[j]);  
+    
+    // Negative daughter:
+    fK0sNegDaugdPhiSdEtaS[j]  = new THnSparseD(Form("fK0sNegDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter;  #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+    fK0sNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+    fOutput->Add(fK0sNegDaugdPhiSdEtaS[j]);  
+
+    if(fIsMC){
+      // Positive daughter:
+      fK0sPosMCResdEtaSdPhiS[j]  = new THnSparseD(Form("fK0sPosMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+      fOutput->Add(fK0sPosMCResdEtaSdPhiS[j]);  
+    
+      // Negative daughter:
+      fK0sNegMCResdEtaSdPhiS[j]  = new THnSparseD(Form("fK0sNegMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*;  Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+      fOutput->Add(fK0sNegMCResdEtaSdPhiS[j]);  
+    }
+
+  }
+
+
+  //    DCA to prim vertex
   fK0sDCADaugToPrimVtx  
-    = new TH3F("fK0sDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. p_{T,l};DCA Pos daug (cm);DCA Neg daug (cm);p_{T,l} (GeV/#it{c})",
+    = new TH3F("fK0sDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l};DCA Pos daug (cm);DCA Neg daug (cm);#it{p}_{T,l} (GeV/#it{c})",
               90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
   fOutput->Add(fK0sDCADaugToPrimVtx);
 
@@ -869,7 +1061,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
       // Monte-Carlo level:
       if(fIsMC){
        snprintf(hNameHist,100, "fK0sdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]); 
-       fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+       fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
                                            nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
                                            nbinsdEta,-1.5,1.5,
                                            nbinsVtx,-10.,10.);
@@ -883,9 +1075,9 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
       for(Int_t ll=0;ll<kNVtxZ;ll++){
        snprintf(hNameHist,100, "fK0sdPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll); 
        fK0sdPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#varphi vs #Delta#eta vs Inv. Mass",
-                                            nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
-                                            nbinsdEta,-1.5,1.5,
-                                            nbins,0.398,0.598);
+                                                                  nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
+                                                                  nbinsdEta,-1.5,1.5,
+                                                                  nbins,0.398,0.598);
        fK0sdPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)"); 
        fK0sdPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta"); 
        fK0sdPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass"); 
@@ -896,18 +1088,18 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
 
   // Correlations (side-band):
   fK0sBckgDecLength
-    = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. p_{T,l}",
+    = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. #it{p}_{T,l}",
               100,0.,15.,nbinPtLP,pMin,ptMaxLP);
   fK0sBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)"); 
-  fK0sBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fK0sBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fK0sBckgDecLength);
 
   fK0sBckgDCADaugToPrimVtx  
-    = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. p_{T,l}",
+    = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l}",
               90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
   fK0sBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)"); 
   fK0sBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)"); 
-  fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fK0sBckgDCADaugToPrimVtx);
   
   fK0sBckgEtaPhi = 
@@ -991,23 +1183,67 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
             nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
   fOutput->Add(fLambdaMassPtEta);
 
-  fLambdaMassPtRap =
-    new TH3F("fLambdaMassPtRap","\\Lambda: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",
-            nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
-  fOutput->Add(fLambdaMassPtRap);
+  for(Int_t i=0; i<kNCent; i++){
+    fLambdaMassPtRap[i] =
+      new TH3F(Form("fLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"\\Lambda: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",
+              nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+    fOutput->Add(fLambdaMassPtRap[i]);
+  }
 
   fLambdaMassPtPhi  = 
     new TH3F("fLambdaMassPtPhi","#Lambda: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
             nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
   fOutput->Add(fLambdaMassPtPhi);
 
-  // Correlations:
+  // ================== Correlations =================
+
+  // ----------------Splitting:
+  xminSplit[1] = 1.065;   xmaxSplit[1] = 1.165;    
+  xminSplit2[1] = 1.065;  xmaxSplit2[1] = 1.165;
+  xminSplit3[1] = 1.065;  xmaxSplit3[1] = 1.165;
+
+  for(Int_t j=0; j<kNCent; j++){
+
+    // positive daughter:
+    fLambdaPosDaugSplCheckCovMat[j]   = new THnSparseD( Form("fLambdaPosDaugSplCheckCovMat_%d",j), "#Lambda Pos. daughter;   #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle;  R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);   
+    fLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+    fOutput->Add(fLambdaPosDaugSplCheckCovMat[j]);  
+
+    // negative daughter:
+    fLambdaNegDaugSplCheckCovMat[j]   = new THnSparseD( Form("fLambdaNegDaugSplCheckCovMat_%d",j), "#Lambda Neg. daughter;   #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle;  R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);   
+    fLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+    fOutput->Add(fLambdaNegDaugSplCheckCovMat[j]); 
+
+    // Positive daughter:
+    fLambdaPosDaugdPhiSdEtaS[j]  = new THnSparseD(Form("fLambdaPosDaugdPhiSdEtaS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+    fLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+    fOutput->Add(fLambdaPosDaugdPhiSdEtaS[j]);  
+    
+    // Negative daughter:
+    fLambdaNegDaugdPhiSdEtaS[j]  = new THnSparseD(Form("fLambdaNegDaugdPhiSdEtaS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+    fLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+    fOutput->Add(fLambdaNegDaugdPhiSdEtaS[j]);  
+
+    if(fIsMC){
+      // Positive daughter:
+      fLambdaPosMCResdEtaSdPhiS[j]  = new THnSparseD(Form("fLambdaPosMCResdEtaSdPhiS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+      fOutput->Add(fLambdaPosMCResdEtaSdPhiS[j]);  
+    
+      // Negative daughter:
+      fLambdaNegMCResdEtaSdPhiS[j]  = new THnSparseD(Form("fLambdaNegMCResdEtaSdPhiS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*;  Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+      fOutput->Add(fLambdaNegMCResdEtaSdPhiS[j]);  
+    }
+
+  }
+
+
+  //    DCA to prim vertex
   fLambdaDCADaugToPrimVtx  
-    = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
+    = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
               90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
   fLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)"); 
   fLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)"); 
-  fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fLambdaDCADaugToPrimVtx);
 
   //    Spatial Resoltuion between trigger- and asosciated- particles
@@ -1022,7 +1258,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
       // Monte-Carlo level:
       if(fIsMC){
        snprintf(hNameHist,100, "fLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]); 
-       fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+       fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
                                               nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
                                               nbinsdEta,-1.5,1.5,
                                               nbinsVtx,-10.,10.);
@@ -1035,7 +1271,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
       // Reconstruction level:
       for(Int_t ll=0;ll<kNVtxZ;ll++){
        snprintf(hNameHist,100, "fLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll); 
-       fLambdadPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll] = new TH3F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+       fLambdadPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll] = new TH3F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
                                                                      nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
                                                                      nbinsdEta,-1.5,1.5,
                                                                      nbins,1.065,1.165);
@@ -1049,18 +1285,18 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
 
   // Correlations (side-band):
   fLambdaBckgDecLength
-    = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. p_{T,l}",
+    = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. #it{p}_{T,l}",
               100,0.,25.,nbinPtLP,pMin,ptMaxLP);
   fLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)"); 
-  fLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fLambdaBckgDecLength);
   
   fLambdaBckgDCADaugToPrimVtx  
-    = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
+    = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
               90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
   fLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)"); 
   fLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)"); 
-  fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fLambdaBckgDCADaugToPrimVtx);
   
   fLambdaBckgEtaPhi = 
@@ -1141,9 +1377,11 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     new TH3F("fAntiLambdaMassPtEta","#bar{#Lambda}: mass vs #it{p}_{T} vs #eta;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#eta",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
   fOutput->Add(fAntiLambdaMassPtEta);
 
-  fAntiLambdaMassPtRap =
-    new TH3F("fAntiLambdaMassPtRap","#bar{#Lambda}: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
-  fOutput->Add(fAntiLambdaMassPtRap);
+  for(Int_t i=0; i<kNCent; i++){
+    fAntiLambdaMassPtRap[i] =
+      new TH3F(Form("fAntiLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"#bar{#Lambda}: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+    fOutput->Add(fAntiLambdaMassPtRap[i]);
+  }
 
   fAntiLambdaMassPtPhi  = 
     new TH3F("fAntiLambdaMassPtPhi","#bar{#Lambda}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
@@ -1151,13 +1389,53 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fOutput->Add(fAntiLambdaMassPtPhi);
 
 
-  // Correlations:
+
+  // ================== Correlations =================
+
+  // ----------------Splitting:
+  for(Int_t j=0; j<kNCent; j++){
+
+    // positive daughter:
+    fAntiLambdaPosDaugSplCheckCovMat[j]  = new THnSparseD(Form("fAntiLambdaPosDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Pos. daughter;  #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle;  R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit); 
+    fAntiLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+    fOutput->Add(fAntiLambdaPosDaugSplCheckCovMat[j]);  
+
+    // negative daughter:
+    fAntiLambdaNegDaugSplCheckCovMat[j]  = new THnSparseD(Form("fAntiLambdaNegDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Neg. daughter;  #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle;  R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls;  (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);       
+    fAntiLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+    fOutput->Add(fAntiLambdaNegDaugSplCheckCovMat[j]); 
+
+    // Positive daughter:
+    fAntiLambdaPosDaugdPhiSdEtaS[j]  = new THnSparseD(Form("fAntiLambdaPosDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+    fAntiLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);  
+      fOutput->Add(fAntiLambdaPosDaugdPhiSdEtaS[j]);  
+    
+    // Negative daughter:
+    fAntiLambdaNegDaugdPhiSdEtaS[j]  = new THnSparseD(Form("fAntiLambdaNegDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+    fAntiLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);    
+      fOutput->Add(fAntiLambdaNegDaugdPhiSdEtaS[j]);  
+
+   if(fIsMC){
+      // Positive daughter:
+      fAntiLambdaPosMCResdEtaSdPhiS[j]  = new THnSparseD(Form("fAntiLambdaPosMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+      fOutput->Add(fAntiLambdaPosMCResdEtaSdPhiS[j]);  
+    
+      // Negative daughter:
+      fAntiLambdaNegMCResdEtaSdPhiS[j]  = new THnSparseD(Form("fAntiLambdaNegMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*;  Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+      fOutput->Add(fAntiLambdaNegMCResdEtaSdPhiS[j]);  
+    }
+
+  }
+
+  
+
+  //    DCA to prim vertex
   fAntiLambdaDCADaugToPrimVtx  
-    = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
+    = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
               90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
   fAntiLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)"); 
   fAntiLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)"); 
-  fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fAntiLambdaDCADaugToPrimVtx);
 
   //    Spatial Resoltuion between trigger- and asosciated- particles
@@ -1171,7 +1449,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
       // Monte-Carlo level:
       if(fIsMC){
        snprintf(hNameHist,100, "fAntiLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]); 
-       fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+       fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
                                                   nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
                                                   nbinsdEta,-1.5,1.5,
                                                   nbinsVtx,-10.,10.);
@@ -1184,7 +1462,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
       // Reconstruction level:
       for(Int_t ll=0;ll<kNVtxZ;ll++){
        snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll); 
-       fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+       fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ  + k*kNVtxZ + ll] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
                                                                          nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
                                                                          nbinsdEta,-1.5,1.5,
                                                                          nbins,1.065,1.165);
@@ -1198,18 +1476,18 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
 
   // Correlations (side-band):
   fAntiLambdaBckgDecLength
-    = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. p_{T,l}",
+    = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. #it{p}_{T,l}",
               100,0.,25.,nbinPtLP,pMin,ptMaxLP);
   fAntiLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)"); 
-  fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fAntiLambdaBckgDecLength);
   
   fAntiLambdaBckgDCADaugToPrimVtx  
-    = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
+    = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
               90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
   fAntiLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)"); 
   fAntiLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)"); 
-  fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})"); 
+  fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})"); 
   fOutput->Add(fAntiLambdaBckgDCADaugToPrimVtx);
   
   fAntiLambdaBckgEtaPhi = 
@@ -1253,63 +1531,6 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
   fOutput->Add(fAntiLambdaBckgDCAPosDaugToPrimVtx);
 
 
-  // Xi: correlations in MC
-  if(fIsMC){  // Monte-Carlo level:
-
-    // Pt of Xi as associated particles
-    fXiMinusPtMCAssoc = new TH2F("fXiMinusPtMCAssoc","Xi Minus MC (Assocaiated particle);#it{p}_{T} (GeV/#it{c});Centrality",50,0.,50.,100,0.,100.);
-    fOutput->Add(fXiMinusPtMCAssoc);
-
-    // Pt of Xi as trigger particles
-    fXiMinusPtMCTrigger = new TH2F("fXiMinusPtMCTrigger","Xi Minus MC (Leadinf particle);#it{p}_{T} (GeV/#it{c});Centrality",50,0.,50.,100,0.,100.);
-    fOutput->Add(fXiMinusPtMCTrigger);
-
-    // Correlations: h-Xi
-    for(Int_t jj=0;jj<kNCent;jj++){
-      for(Int_t k=0;k<kN2;k++){
-
-       snprintf(hNameHist,100, "fXiMinusdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV02[k],kPtBinV02[k+1],kBinCent[jj],kBinCent[jj+1]); 
-       fXiMinusdPhidEtaMC[jj*kN2+k] = new TH3F(hNameHist,"Xi Minus MC: #Delta#varphi vs #Delta#eta vs p_{T,l}; #Delta#varphi (rad); #Delta#eta; Vertex Z (cm)",
-                                               nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
-                                               nbinsdEta,-1.5,1.5,
-                                               nbinsVtx,-10.,10.);
-       fOutput->Add(fXiMinusdPhidEtaMC[jj*kN2+k]);
-      
-
-       snprintf(hNameHist,100, "fXiMinusdPhidEtaMC2_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV02[k],kPtBinV02[k+1],kBinCent[jj],kBinCent[jj+1]); 
-       fXiMinusdPhidEtaMC2[jj*kN2+k] = new TH3F(hNameHist,"Xi Minus MC: #Delta#varphi vs #Delta#eta vs p_{T,l}; #Delta#varphi (rad); #Delta#eta; Vertex Z (cm)",
-                                               nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
-                                               nbinsdEta,-1.5,1.5,
-                                               nbinsVtx,-10.,10.);
-       fOutput->Add(fXiMinusdPhidEtaMC2[jj*kN2+k]);
-      
-      }
-    }
-
-    // Correlations: Xi-h
-    for(Int_t jj=0;jj<kNCent;jj++){
-      for(Int_t k=0;k<kN3;k++){
-       snprintf(hNameHist,100, "fXiMinusdPhidEtaMC3_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV02[k],kPtBinV02[k+1],kBinCent[jj],kBinCent[jj+1]); 
-       fXiMinusdPhidEtaMC3[jj*kN3+k] = new TH3F(hNameHist,"Xi Minus MC (LP): #Delta#varphi vs #Delta#eta vs p_{T,l}; #Delta#varphi (rad); #Delta#eta; Vertex Z (cm)",
-                                                nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
-                                                nbinsdEta,-1.5,1.5,
-                                                nbinsVtx,-10.,10.);
-       fOutput->Add(fXiMinusdPhidEtaMC3[jj*kN3+k]);
-      }
-    }
-
-  } // End MC condition
-
-  // Gamma conversion
-  for(Int_t jj=0;jj<kNCent;jj++){
-    snprintf(hNameHist,100, "fGammaConversiondPhidEta_Cent_%.0f_%.0f",kBinCent[jj],kBinCent[jj+1]); 
-    fGammaConversiondPhidEta[jj] = new TH3F(hNameHist,"Gamma Conversion: #Delta#varphi vs #Delta#eta;#Delta#varphi (rad);#Delta#eta;Vertex Z (cm)",
-                                           2*nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
-                                           nbinsdEta,-1.5,1.5,
-                                           nbinsVtx,-10.,10.);
-    fOutput->Add(fGammaConversiondPhidEta[jj]);
-  }
-
   // ============================================================= //
 
   // K0s in ME:  
@@ -1479,11 +1700,11 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     // Number of TPC clusters:
     //     --- signal ---
     fK0sNClustersTPC =  // Positive momentum to positive daugther - Negative momentum to negative daugther 
-      new TH3F("fK0sNClustersTPC","K^{0}_{S};#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax); 
+      new TH3F("fK0sNClustersTPC","K^{0}_{S};#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax); 
     fOutputQA->Add(fK0sNClustersTPC);
     //     --- background ---
     fK0sBckgNClustersTPC =  // Positive momentum to positive daugther - Negative momentum to negative daugther 
-      new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax); 
+      new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax); 
     fOutputQA->Add(fK0sBckgNClustersTPC);
  
     // Number of ITS clusters:
@@ -1645,11 +1866,11 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     // Number of TPC clusters:
     //     --- signal ---
     fLambdaNClustersTPC = 
-      new TH3F("fLambdaNClustersTPC","#Lambda;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax); 
+      new TH3F("fLambdaNClustersTPC","#Lambda;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax); 
     fOutputQA->Add(fLambdaNClustersTPC);
     //     --- background ---
     fLambdaBckgNClustersTPC = 
-      new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax); 
+      new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax); 
     fOutputQA->Add(fLambdaBckgNClustersTPC);
  
     // Number of ITS clusters:
@@ -1810,11 +2031,11 @@ void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
     // Number of TPC clusters:
     //     --- signal ---
     fAntiLambdaNClustersTPC = 
-      new TH3F("fAntiLambdaNClustersTPC","#bar{#Lambda};#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax); 
+      new TH3F("fAntiLambdaNClustersTPC","#bar{#Lambda};#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax); 
     fOutputQA->Add(fAntiLambdaNClustersTPC);
     //     --- background ---
     fAntiLambdaBckgNClustersTPC = 
-      new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax); 
+      new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax); 
     fOutputQA->Add(fAntiLambdaBckgNClustersTPC);
  
     // Number of ITS clusters:
@@ -1889,32 +2110,21 @@ static Int_t CentBin(Double_t cent)
 
 //___________________________________________________________________________________________
 
-Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(AliAODTrack *t) 
+Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(const AliAODTrack *t) 
 {
   // Track criteria for primaries particles 
   if (TMath::Abs(t->Eta())>0.8 )  return kFALSE; 
-  if (!(t->TestFilterMask(1<<7))) return kFALSE; 
+  // TPC only tracks
+  //if (!(t->TestFilterMask(1<<7))) return kFALSE; 
+  // Hybrid tracks
+  if( !(t->TestFilterBit(272)) )  return kFALSE;
 
   Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1); 
-  if (nCrossedRowsTPC < 70) return kFALSE;
+  if (nCrossedRowsTPC < 70) return kFALSE;  
   
-  // Point in the SPD
+   // Point in the SPD
   Int_t SPDHits = t->HasPointOnITSLayer(0) + t->HasPointOnITSLayer(1);
-
-  // Propagate the global track to the DCA.
-  /*
-    Double_t PosAtDCA[2] = {-999,-999};
-    Double_t covar[3] = {-999,-999,-999};
-    const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
-    t->PropagateToDCA(vtx,fAOD->GetMagneticField(),100.,PosAtDCA,covar);
-  */
-
-  // 5) DCA cut (See R_AA paper).
-  //Double_t DCAcutvalue[2];
-  //DCAcutvalue[0] = 0.018 + 0.035*TMath::Power(t->Pt(),-1.01);
-  //DCAcutvalue[1] = 2.; 
-    
-  //if( SPDHits && (TMath::Abs(PosAtDCA[0])>DCAcutvalue[0] || TMath::Abs(PosAtDCA[1])>DCAcutvalue[1])  ){ 
   if( SPDHits )
     fTriggerWiSPDHit->Fill(1.5);
   
@@ -2008,7 +2218,7 @@ static Float_t MyRapidity(Float_t rE, Float_t rPz)
 
 //___________________________________________________________________________________________
 
-static Int_t SameTrack(AliAODTrack *trk, const AliAODTrack *daugTrk)
+static Int_t SameTrack(const AliAODTrack *trig, const AliAODTrack *daug)
 { 
   // Local method to compaire the momentum between two tracks
 
@@ -2026,13 +2236,9 @@ static Int_t SameTrack(AliAODTrack *trk, const AliAODTrack *daugTrk)
     isSamePt = 1;
   */
     
-  if(  (TMath::Abs(daugTrk->GetID())+1)==(TMath::Abs(trk->GetID()))  )
+  if(  (TMath::Abs(daug->GetID())+1)==(TMath::Abs(trig->GetID()))  )
     isSamePt = 1;
   
-  /*
-    if(  (TMath::Abs(nTrk->GetID()))==(TMath::Abs(trk->GetID()))  ||
-    (TMath::Abs(pTrk->GetID()))==(TMath::Abs(trk->GetID())) )  isSamePt = 1;
-  */
 
   return isSamePt;
 
@@ -2040,6 +2246,21 @@ static Int_t SameTrack(AliAODTrack *trk, const AliAODTrack *daugTrk)
 
 //___________________________________________________________________________________________
 
+static Int_t SameLabel(const AliAODTrack *trig, const AliAODTrack *daug)
+{ 
+  // Compaire the the label value that points back to the Monte Carlo production
+  //cout << trig->GetLabel() << "         " << daug->GetLabel() << endl;
+
+  if(  TMath::Abs(trig->GetLabel() ) == 
+       TMath::Abs(daug->GetLabel() )  )
+    return 1.0;
+  
+  return 0.;
+
+}
+
+//___________________________________________________________________________________________
+
 static Float_t SpatialResolution(Float_t p1x,Float_t p1y,Float_t p2x,Float_t p2y,Float_t dist)
 {
   // Obtains the spacial resolution between trigger and V0
@@ -2058,96 +2279,416 @@ static Float_t SpatialResolution(Float_t p1x,Float_t p1y,Float_t p2x,Float_t p2y
 
 //___________________________________________________________________________________________
 
-void AliAnalysisTaskLambdaOverK0sJets::RecCascade(AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
+static Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign)
 {
-  // Local method to reconstruct cascades candidates from the combinations of three tracks
-  // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
-  // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
-  // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
+  //
+  // calculates dphistar
+  //
 
-  Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
-  Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.; 
-  Float_t pLambda[3] = {0.,0.,0.};
-  Float_t pCascade[3] = {0.,0.,0.};
-  Float_t lMassCascade = 0., lPtot2Cascade=0.;
+  Float_t dphistar = phi1 - phi2 - charge1 * bSign * TMath::ASin(0.075 * radius / pt1) + charge2 * bSign * TMath::ASin(0.075 * radius / pt2);
+  static const Double_t kPi = TMath::Pi();
 
-  // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
-  for(Int_t i=0;i<2;i++){
+  // circularity
+  if (dphistar > kPi)
+    dphistar = kPi * 2 - dphistar;
+  if (dphistar < -kPi)
+    dphistar = -kPi * 2 - dphistar;
+  if (dphistar > kPi) // might look funny but is needed
+    dphistar = kPi * 2 - dphistar;
 
-    // 0. Check the charge for both tracks: trk1 & trk2. 
-    //    Usefull in the Lambda step.
-    if( trk1->Charge() == trk2->Charge() ) 
-      continue;
-   
-    // 1. Bachelor: Allocation for the track
-    if(i==0) // Xi 
-      lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
-    else if(i==1) //Omega
-      lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
+  return dphistar;
 
-    lPtot2Bach = TMath::Power(trkBch->P(),2);
+}
 
-    lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
 
-    // 2. Lambda: Kinematical properties
-    lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
-      
-    pLambda[0] = trk1->Px() + trk2->Px();
-    pLambda[1] = trk1->Py() + trk2->Py();
-    pLambda[2] = trk1->Pz() + trk2->Pz();
+//___________________________________________________________________________________________
 
-    lPtot2Lambda = pLambda[0]*pLambda[0] +  pLambda[1]*pLambda[1] +  pLambda[2]*pLambda[2];
+static Float_t TwoTrackEfficiencyCut(Float_t phi1, Float_t eta1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t eta2, Float_t pt2, Float_t charge2, Float_t bSign)
+{
+  // Code taken from the HBT analysis to reject the track splitting
+  // It was modified to provide only the value of kDphiStarMax
+  // and a possible rejection in the kDphiStarMean
 
-    lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
+  Float_t kRadiousDphiStarMax = -0.0005;
+  Float_t deta = eta1 - eta2;
+  Float_t twoTrackEfficiencyCutValue = 0.02;
 
-    // 3. Cascade: Reconstruction
-    pCascade[0] = pLambda[0] + trkBch->Px();
-    pCascade[1] = pLambda[1] + trkBch->Py();
-    pCascade[2] = pLambda[2] + trkBch->Pz();
+  // optimization
+  if (TMath::Abs(deta) < twoTrackEfficiencyCutValue * 2.5 * 3) {
 
-    lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
+    // check first boundaries to see if is worth to loop and find the minimum
+    Float_t dphistar1 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 0.8, bSign);
+    Float_t dphistar2 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 2.5, bSign);
 
-    lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
-   
-    // 4. Filling histograms
-    if( histo.Contains("K0s") ) {
-      if(i==0) // Xi 
-       fV0MassCascade->Fill(lMassCascade,1);
-      else if(i==1) //Omega
-       fV0MassCascade->Fill(lMassCascade,3);
-    }
-    else if( histo.Contains("AntiLambda") ) {
-      if(i==0) // Xi 
-       fV0MassCascade->Fill(lMassCascade,9);
-      else if(i==1) //Omega
-       fV0MassCascade->Fill(lMassCascade,11);
-    }
-    else if( histo.Contains("Lambda") ) {
-      if(i==0) // Xi 
-       fV0MassCascade->Fill(lMassCascade,5);
-      else if(i==1) //Omega
-       fV0MassCascade->Fill(lMassCascade,7);
-    }
+    const Float_t kLimit = twoTrackEfficiencyCutValue * 3;
 
-  }
+    //Float_t dphistarminabs = 1e5;
+    //Float_t dphistarmin = 1e5;
+
+    if (TMath::Abs(dphistar1) < kLimit || TMath::Abs(dphistar2) < kLimit || dphistar1 * dphistar2 < 0){
   
+      kRadiousDphiStarMax = 0;
+      //kDphiStarMean = 0; 
+      //Int_t i=0;
+
+      for (Double_t rad=0.8; rad<2.51; rad+=0.01){
+
+       if ( TMath::Abs(0.075 * rad / pt2)>1 ) break;
+
+       Float_t dphistar = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, rad, bSign);
+       Float_t dphistarabs = TMath::Abs(dphistar);
+
+       if( ( (dphistarabs*rad) > kRadiousDphiStarMax) && ( TMath::Abs(deta) < twoTrackEfficiencyCutValue ) ){
+         kRadiousDphiStarMax = dphistarabs*rad;
+       }
+
+       //kDphiStarMean += dphistarabs;
+       //i++;
+
+      }
+      
+      //kDphiStarMean = kDphiStarMean/i;
+      /*if (TMath::Abs(deta) < twoTrackEfficiencyCutValue && kDphiStarMean < twoTrackEfficiencyCutValue ){
+       return kFALSE;
+       }*/
+      
+    } // End selection in dphistar
+    
+  } // End dEta value
+
+
+  return kRadiousDphiStarMax;
+
 }
 
 //___________________________________________________________________________________________
+/*
+static Bool_t GoodTPCSharedMap(const AliAODTrack *track)
+{
+  // Rejects tracks with shared clusters after filling a control histogram
+  // This overload is used for primaries
  
-void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig) 
-{ 
-  // Three options for the 'step' variable:
-  // 1) TriggerCheck
-  // 2) Reconstruction
+  // Get the shared maps
+  const TBits sharedMap = track->GetTPCSharedMap();
+  // Fill a control histogram
+  //fPriHistShare->Fill(sharedMap.CountBits());
+  // Reject shared clusters
+  if((sharedMap.CountBits()) >= 1){
+    // Bad track, has too many shared clusters!
+    return kFALSE;
+  }
+  return kTRUE;
+}
+*/
+//___________________________________________________________________________________________
+   
+static Float_t GetFractionTPCSharedCls(const AliAODTrack *track)
+{
+  // Rejects tracks with shared clusters after filling a control histogram
+  // This overload is used for primaries
+  // Get the shared maps
+  const TBits sharedMap = track->GetTPCSharedMap();
 
-  AliAODTrack *trkTrig = 0x0;
-  Float_t  ptTrig  = -100.;
-  Float_t  phiTrig = -100.;
-  Float_t  etaTrig = -100.; 
-  Double_t pTrig[3]; 
+  return 1.*sharedMap.CountBits()/track->GetTPCNclsF();
+  
+}
 
-  if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
+//___________________________________________________________________________________________
+
+Double_t AliAnalysisTaskLambdaOverK0sJets::ThetaS(TString part)
+{
+  // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+  // private communication with Hans Beck
+
+  // Returns the longitudinal angle of the particles propagated
+  // position at R=1.25m. See
+  // https://edms.cern.ch/file/406391/2/ALICE-INT-2003-038.pdf
+  // for the ALICE coordinate system. Theta is zero at positive z,
+  // pi/2 at z = 0 aka the xy plane and pi at negative z 
+
+  // R^    ^  
+  //  |   /
+  //  |θ'/
+  //  | / Î¸
+  //  |/____>z
+  // 
+  // Let's compute Î¸' and Î¸ = Ï€/2 - Î¸'
+  // where Î¸' can even be and should 
+  // sometimes be negative
+  // tan(θ') = z/R
+  // Î¸' = arctan(z/R)
+  // Î¸ = Ï€/2 - Î¸'
+  //   = Ï€/2 - arctan(z/R)
+  // Note that in the doc above theta
+  // is calculated as arccos(z/sqrt(x^2+y^2+z^2))
+
+  // Array of positions is 85,105,125,..cm,
+  // we take the z position at R=1.25m
+  // return TMath::Pi()/2. - TMath::ATan(fXshifted[2][2]/125.);
+  /*
+    if( part.EqualTo("Trigger") ) 
+    return TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/125.);
+    else if( part.EqualTo("Daughter") )  
+    return TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/125.);  
+  */
+  
+  Double_t thetaS = -100.;
+
+  if( part.EqualTo("Trigger") ) 
+    thetaS = TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/fTPCRadius);
+  if( part.EqualTo("Daughter") )  
+    thetaS = TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/fTPCRadius);  
+
+  return thetaS;
+
+}
+
+//___________________________________________________________________________________________
+
+Double_t AliAnalysisTaskLambdaOverK0sJets::EtaS(TString part)
+{
+  // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+  // private communication with Hans Beck
+
+  // Returns the corresponding eta of a pri. part. 
+  // with this particles pos at R=1.25m
+
+  // http://en.wikipedia.org/wiki/Pseudorapidity
+  // Î· = -ln[ tan(θ/2)]
+  // printf("z: %+04.0f, thetaS %+03.2f etaS %+1.2f\n"
+  //    ,fXshifted[2][2],ThetaS(),-TMath::Log( TMath::Tan(ThetaS()/2.) ));
+
+  return -TMath::Log( TMath::Tan(ThetaS(part)/2.) );
+}
+
+//___________________________________________________________________________________________
+
+Float_t AliAnalysisTaskLambdaOverK0sJets::dEtaS()
+{
+  // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+  // private communication with Hans Beck
+
+  // Returns the pseudorapidity star difference
+
+  // It is important to keep the calculations easy and separated.
+  // The calculation of EtaS is straight forward, one just has to
+  // do it step by step to not get confused.
+  return EtaS("Trigger") - EtaS("Daughter");
+}
+
+//___________________________________________________________________________________________
+
+Float_t AliAnalysisTaskLambdaOverK0sJets::dPhiSAtR125()
+{
+  // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+  // private communication with Hans Beck
+
+  // returns delta phi star at R=1.2m
+  // position at R=1.2m is stored as second radius
+  // const Float_t distSft= TMath::Sqrt(TMath::Power(track1.fXshifted[2][0] - track2.fXshifted[2][0],2)
+  //                                +TMath::Power(track1.fXshifted[2][1] - track2.fXshifted[2][1],2));
+  const Float_t distSft= TMath::Sqrt( TMath::Power(fTrigSftR125[0] - fDaugSftR125[0],2) +
+                                     TMath::Power(fTrigSftR125[1] - fDaugSftR125[1],2) );
+  //return 2.0 * TMath::ATan(distSft/2./(125.));
+  return 2.0 * TMath::ATan(distSft/2./(fTPCRadius));
+}
+
+
+//___________________________________________________________________________________________
+
+void AliAnalysisTaskLambdaOverK0sJets::SetSftPosR125(const AliAODTrack *track,const Float_t bfield,const Float_t priVtx[3], TString part)
+{
+  // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+  // private communication with Hans Beck
+
+  // Sets the spatial position of the track at the radius R=1.25m in the shifted coordinate system
+  
+  // Initialize the array to something indicating there was no propagation
+  if(part.EqualTo("Trigger")){  
+    fTrigSftR125[0] = -9999.;
+    fTrigSftR125[1] = -9999.;
+    fTrigSftR125[2] = -9999.;
+  }
+  if(part.EqualTo("Daughter")){
+    fDaugSftR125[0] = -9999.;
+    fDaugSftR125[1] = -9999.;
+    fDaugSftR125[2] = -9999.;
+  }
+
+  // Make a copy of the track to not change parameters of the track
+  AliExternalTrackParam etp;
+  etp.CopyFromVTrack(track);
+  
+  // The global position of the the track
+  Double_t xyz[3]={-9999.,-9999.,-9999.};  
+
+  // The radius we want to propagate to, squared
+  //const Float_t RSquaredWanted(125.*125.);
+  const Float_t RSquaredWanted(fTPCRadius*fTPCRadius);
+
+  // Propagation is done in local x of the track
+  for (Float_t x = 58.; x < 247.; x+=1.){
+    // Starts at 83 / Sqrt(2) and goes outwards. 85/Sqrt(2) is the smallest local x
+    // for global radius 85 cm. x = 245 is the outer radial limit of the TPC when
+    // the track is straight, i.e. has inifinite pt and doesn't get bent. 
+    // If the track's momentum is smaller than infinite, it will develop a y-component,
+    // which adds to the global radius
+    // We don't change the propagation steps to not mess up things!
+
+    // Stop if the propagation was not succesful. This can happen for low pt tracks
+    // that don't reach outer radii
+    if(!etp.PropagateTo(x,bfield)) break;
+    etp.GetXYZ(xyz); // GetXYZ returns global coordinates
+
+    // Calculate the shifted radius we are at, squared. 
+    // Compare squared radii for faster code
+    Float_t shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
+      + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
+
+    // Roughly reached the radius we want
+    if(shiftedRadiusSquared > RSquaredWanted){
+      
+      // Bigger loop has bad precision, we're nearly one centimeter too far, 
+      // go back in small steps.
+      while (shiftedRadiusSquared>RSquaredWanted){
+       // Propagate a mm inwards
+       x-=.1;
+       if(!etp.PropagateTo(x,bfield)){
+         // Propagation failed but we're already with a
+         // cm precision at R=1.25m so we only break the 
+         // inner loop
+         break;
+       }
+       // Get the global position
+       etp.GetXYZ(xyz);
+       // Calculate shifted radius, squared
+       shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
+         + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
+      }
+
+      // We reached R=1.25m with a precission of a cm to a mm,
+      // set the spatial position
+      if(part.EqualTo("Trigger")){
+       fTrigSftR125[0] = xyz[0] - priVtx[0];
+       fTrigSftR125[1] = xyz[1] - priVtx[1];
+       fTrigSftR125[2] = xyz[2] - priVtx[2];
+
+       /*cout << endl
+         << xyz[0] << "   " << xyz[1] << "   " << xyz[2] << endl;
+         cout << fTrigSftR125[0] << "   " << fTrigSftR125[1] << "   " <<fTrigSftR125[2] << endl;*/
+      }
+      if(part.EqualTo("Daughter")){
+       fDaugSftR125[0] = xyz[0] - priVtx[0];
+       fDaugSftR125[1] = xyz[1] - priVtx[1];
+       fDaugSftR125[2] = xyz[2] - priVtx[2];
+
+       /*cout << endl 
+         << xyz[0] << "   " << xyz[1] << "   " << xyz[2] << endl
+         << fDaugSftR125[0] << "   " << fDaugSftR125[1] << "   " <<fDaugSftR125[2] << endl;*/
+      }
+      // Done
+      return;
+
+    } // End of if roughly reached radius
+  } // End of coarse propagation loop
+
+}
+
+//___________________________________________________________________________________________
+
+void AliAnalysisTaskLambdaOverK0sJets::RecCascade(const AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
+{
+  // Local method to reconstruct cascades candidates from the combinations of three tracks
+  // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
+  // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
+  // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
+
+  Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
+  Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.; 
+  Float_t pLambda[3] = {0.,0.,0.};
+  Float_t pCascade[3] = {0.,0.,0.};
+  Float_t lMassCascade = 0., lPtot2Cascade=0.;
+
+  // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
+  for(Int_t i=0;i<2;i++){
+
+    // 0. Check the charge for both tracks: trk1 & trk2. 
+    //    Usefull in the Lambda step.
+    if( trk1->Charge() == trk2->Charge() ) 
+      continue;
+   
+    // 1. Bachelor: Allocation for the track
+    if(i==0) // Xi 
+      lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
+    else if(i==1) //Omega
+      lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
+
+    lPtot2Bach = TMath::Power(trkBch->P(),2);
+
+    lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
+
+    // 2. Lambda: Kinematical properties
+    lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
+      
+    pLambda[0] = trk1->Px() + trk2->Px();
+    pLambda[1] = trk1->Py() + trk2->Py();
+    pLambda[2] = trk1->Pz() + trk2->Pz();
+
+    lPtot2Lambda = pLambda[0]*pLambda[0] +  pLambda[1]*pLambda[1] +  pLambda[2]*pLambda[2];
+
+    lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
+
+    // 3. Cascade: Reconstruction
+    pCascade[0] = pLambda[0] + trkBch->Px();
+    pCascade[1] = pLambda[1] + trkBch->Py();
+    pCascade[2] = pLambda[2] + trkBch->Pz();
+
+    lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
+
+    lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
+   
+    // 4. Filling histograms
+    if( histo.Contains("K0s") ) {
+      if(i==0) // Xi 
+       fV0MassCascade->Fill(lMassCascade,1);
+      else if(i==1) //Omega
+       fV0MassCascade->Fill(lMassCascade,3);
+    }
+    else if( histo.Contains("AntiLambda") ) {
+      if(i==0) // Xi 
+       fV0MassCascade->Fill(lMassCascade,9);
+      else if(i==1) //Omega
+       fV0MassCascade->Fill(lMassCascade,11);
+    }
+    else if( histo.Contains("Lambda") ) {
+      if(i==0) // Xi 
+       fV0MassCascade->Fill(lMassCascade,5);
+      else if(i==1) //Omega
+       fV0MassCascade->Fill(lMassCascade,7);
+    }
+
+  }
+  
+}
+
+//___________________________________________________________________________________________
+void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig) 
+{ 
+  // Three options for the 'step' variable:
+  // 1) TriggerCheck
+  // 2) Reconstruction
+
+  const AliAODTrack *trkTrig = 0x0;
+  Float_t  ptTrig  = -100.;
+  Float_t  phiTrig = -100.;
+  Float_t  etaTrig = -100.; 
+  Double_t pTrig[3]; 
+
+  if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
     trkTrig = (AliAODTrack*)fAOD->GetTrack(idTrig); 
     ptTrig  = trkTrig->Pt();
     phiTrig = trkTrig->Phi();
@@ -2256,6 +2797,51 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
     Float_t lPhi  = v0->Phi();
     //lPhi  = ( (lPhi < 0) ? lPhi + 2*TMath::Pi() : lPhi );    
 
+    // rapidity
+    Float_t rapK0s = v0->RapK0Short();
+    Float_t rapLambda = v0->RapLambda();
+
+    if(fUseEtaCut){
+      rapK0s = lEta;
+      rapLambda = lEta;
+    }
+   
+    // **********************************
+    // PID - tracks  
+    Float_t pPos = -100.;
+    Float_t pNeg = -100.;
+    
+    //Float_t dedxPos = -1000.;
+    //Float_t dedxNeg = -1000.;
+    //Float_t nsigPosPion   = 0.;
+    //Float_t nsigNegPion   = 0.;
+    Float_t nsigPosProton = 0.;
+    Float_t nsigNegProton = 0.;
+
+    if(fUsePID && !fIsMC) {     
+      const AliAODPid *pidNeg = ntrack->GetDetPid();
+      const AliAODPid *pidPos = ptrack->GetDetPid();
+      
+      if (pidNeg && pidPos) {
+       pPos = pidPos->GetTPCmomentum();
+       pNeg = pidNeg->GetTPCmomentum();
+       //dedxPos = pidPos->GetTPCsignal()/47.; 
+       //dedxNeg = pidNeg->GetTPCsignal()/47.; 
+       
+       
+       if(pPos<1.){
+         //nsigPosPion   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
+         nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
+       }
+       if(pNeg<1.){
+         //nsigNegPion   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
+         nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
+       }
+       
+      }
+      
+    }
+
     // **********************************
     // Disentangle the V0 candidate
     Float_t massK0s = 0., mK0s = 0., sK0s = 0.;
@@ -2335,8 +2921,8 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
        if( pPart->IsPhysicalPrimary() ) lMCAssocPosDaug = 1;
        
        /*
-       if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
-            TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
+         if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
+         TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
          goto noas;
        */
        /*
@@ -2437,10 +3023,10 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
        else if( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211)  &&
                 (inMother==ipMother) && (lPDGCodeV0==3122)  ){
          
-         if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
+         if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
+                                                              ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
+                                                              ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
+                                                              ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
               ) lComeFromSigma = kTRUE;
          else lComeFromSigma = kFALSE; 
          
@@ -2459,10 +3045,10 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
                 (inMother==ipMother) && (lPDGCodeV0==-3122) ) {
          
          
-         if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
+         if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
+                                                              ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
+                                                              ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
+                                                              ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
               ) lComeFromSigma = kTRUE;
          else lComeFromSigma = kFALSE;  
          
@@ -2489,9 +3075,23 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
        Float_t ptAs = p0->Pt();
        Float_t rapAs = p0->Y();
        Float_t etaAs = p0->Eta();
-       // phi resolution for V0-reconstruction
+
+       if(fUseEtaCut){
+         rapAs = etaAs;
+       }
+
+       // phi resolution for V0-reconstruction and daughter tracks
        Float_t resEta = p0->Eta() - v0->Eta(); 
        Float_t resPhi = p0->Phi() - v0->Phi(); 
+       Float_t resPt  = p0->Pt() - v0->Pt();   
+       
+       Float_t resEtaPosDaug = pPart->Eta() - ptrack->Eta();   
+       Float_t resPhiPosDaug = pPart->Phi() - ptrack->Phi();   
+       Float_t resPtPosDaug  = pPart->Pt() - ptrack->Pt();
+
+       Float_t resEtaNegDaug = nPart->Eta() - ntrack->Eta();   
+       Float_t resPhiNegDaug = nPart->Phi() - ntrack->Phi();   
+       Float_t resPtNegDaug  = nPart->Pt() - ntrack->Pt();
 
        if ( (l < 0.01)  &&  (ptAs<10.) ) { // Primary V0
          
@@ -2501,7 +3101,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
            // Natural particles
            if(isNaturalPart){
 
-             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
 
                fK0sAssocPt->Fill(ptAs);
                fK0sAssocPtRap->Fill(ptAs,rapAs,centrality);
@@ -2510,43 +3110,48 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
                // Armenteros Pod.  and rapidity cut
                if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){ 
                                
+                 Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
+                 Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
+                 Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
+                 Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
+                 
                  // Distributions for the efficiency (systematics chechks)
-                 fK0sAssocPtMassArm[curCentBin]->Fill(v0->MassK0Short(),ptAs,rapAs);
-                 fK0sAssocMassPtVtx[curCentBin]->Fill(v0->MassK0Short(),ptAs,zv);
-                 fK0sAssocMassPtDCADaug[curCentBin]->Fill(v0->MassK0Short(),ptAs,dca);
-                 fK0sAssocMassPtCPA[curCentBin]->Fill(v0->MassK0Short(),ptAs,cpa);
+                 fK0sAssocPtMassArm[curCentBin]->Fill(effK0sArm);
+                 fK0sAssocMassPtVtx[curCentBin]->Fill(effK0sVtx);
+                 fK0sAssocMassPtDCADaug[curCentBin]->Fill(effK0sDCA);
+                 fK0sAssocMassPtCPA[curCentBin]->Fill(effK0sCPA);
                }
              
                fK0sMCResEta->Fill(resEta,pt,centrality);
                fK0sMCResPhi->Fill(resPhi,pt,centrality);
-             
+               fK0sMCResPt->Fill(resPt,pt,centrality);
+               
+               fK0sPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
+               fK0sPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
+               fK0sPosMCResPt->Fill(resPtPosDaug,pt,centrality);
+
+               fK0sNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
+               fK0sNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
+               fK0sNegMCResPt->Fill(resPtNegDaug,pt,centrality); 
+
              } // End selection in the dca to prim. vtx and the number of clusters
 
              // Distributions for the efficiency (Systematic checks)
              if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){ 
-
+             
                //  Cut in the DCA ToPrim Vtx
-               if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
-                 if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
-                   fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
-                 if( (dcaPos>0.115) && (dcaNeg>0.115) ) 
-                   fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
-                 if( (dcaPos>0.12) && (dcaNeg>0.12) )
-                   fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
-                 if( (dcaPos>0.2) && (dcaNeg>0.2) )
-                   fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+               if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+
+                 Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
+                 fK0sAssocMassPtDCAPV[curCentBin]->Fill(effK0sdcaPV);
                }                 
 
-               // cut in the number of tpc ckusters
-               if( (dcaPos>0.1) && (dcaNeg>0.1) ){
-                 if( (nClsTPCPos>70) && (nClsTPCNeg>70) )  // default value
-                   fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
-                 if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
-                   fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
-                 if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
-                   fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
-                 if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
-                   fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+               // cut in the number of tpc clusters
+               if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
+                 
+                 Double_t effK0sTPCcls[5]  = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+                 fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(effK0sTPCcls);
+                 
                }
 
              } // End selection for systematics
@@ -2555,17 +3160,22 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
            // Embeded particles
            if(!isNaturalPart){ 
 
-             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
 
                fK0sAssocPtRapEmbeded->Fill(ptAs,rapAs,centrality);
 
                if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0)) && TMath::Abs(rapAs)<fYMax ){
                  
+                 Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
+                 Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
+                 Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
+                 Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
+               
                  // Distributions for the efficiency (systematics chechks)
-                 fK0sAssocPtMassArmEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,rapAs);    
-                 fK0sAssocMassPtVtxEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,zv);
-                 fK0sAssocMassPtDCADaugEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,dca);
-                 fK0sAssocMassPtCPAEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,cpa);
+                 fK0sAssocPtMassArmEmbeded[curCentBin]->Fill(effK0sArm);       
+                 fK0sAssocMassPtVtxEmbeded[curCentBin]->Fill(effK0sVtx);
+                 fK0sAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effK0sDCA);
+                 fK0sAssocMassPtCPAEmbeded[curCentBin]->Fill(effK0sCPA);
                }
 
              } // End selection in the dca to prim. vtx and the number of clusters
@@ -2574,27 +3184,17 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){ 
 
                //  Cut in the DCA ToPrim Vtx
-               if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
-                 if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
-                   fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
-                 if( (dcaPos>0.115) && (dcaNeg>0.115) ) 
-                   fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
-                 if( (dcaPos>0.12) && (dcaNeg>0.12) )
-                   fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
-                 if( (dcaPos>0.2) && (dcaNeg>0.2) )
-                   fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+               if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+
+                 Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
+                 fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effK0sdcaPV);
                }                 
 
-               // cut in the number of tpc ckusters
-               if( (dcaPos>0.1) && (dcaNeg>0.1) ){
-                 if( (nClsTPCPos>70) && (nClsTPCNeg>70) )  // default value
-                   fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
-                 if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
-                   fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
-                 if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
-                   fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
-                 if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
-                   fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+               // cut in the number of tpc clusters
+               if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
+
+                 Double_t effK0sTPCcls[5]  = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+                 fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effK0sTPCcls);
                }
 
              } // End selection for systematics
@@ -2602,14 +3202,14 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
            } // End embeded particle selection
 
          }  // End K0s selection
-
+         
          // Lambda:
-         if(ctL && lCheckMcLambda) {  
+         if(ctL && lCheckMcLambda && (TMath::Abs(nsigPosProton)<fNSigma) ) {  
            
            // Natural particles
            if(isNaturalPart){
 
-             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
 
                fLambdaAssocPt->Fill(ptAs);
                fLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
@@ -2618,19 +3218,33 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
                // Rapidity cut
                if(TMath::Abs(rapAs)<fYMax)  {
 
+                 Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
+                 Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
+                 Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
+                 Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
+
                  // Distributions for the efficiency (systematics chechks)
-                 fLambdaAssocMassPtRap[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
-                 fLambdaAssocMassPtVtx[curCentBin]->Fill(v0->MassLambda(),ptAs,zv);
-                 fLambdaAssocMassPtDCADaug[curCentBin]->Fill(v0->MassLambda(),ptAs,dca);
-                 fLambdaAssocMassPtCPA[curCentBin]->Fill(v0->MassLambda(),ptAs,cpa);
+                 fLambdaAssocMassPtRap[curCentBin]->Fill(effLambda);
+                 fLambdaAssocMassPtVtx[curCentBin]->Fill(effLambdaVtx);
+                 fLambdaAssocMassPtDCADaug[curCentBin]->Fill(effLambdaDCA);
+                 fLambdaAssocMassPtCPA[curCentBin]->Fill(effLambdaCPA);
 
                  if( !isCandidate2K0s && !isCandidate2LambdaBar)
-                   fLambdaAssocMassPtRap2[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
+                   fLambdaAssocMassPtRap2[curCentBin]->Fill(effLambda);
 
                }
 
                fLambdaMCResEta->Fill(resEta,pt,centrality);
                fLambdaMCResPhi->Fill(resPhi,pt,centrality);
+               fLambdaMCResPt->Fill(resPt,pt,centrality);
+               
+               fLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
+               fLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
+               fLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
+
+               fLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
+               fLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
+               fLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
 
              } // End selection in the dca to prim. vtx and the number of clusters
              
@@ -2638,34 +3252,17 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              if( TMath::Abs(rapAs)<fYMax ){ 
                
                //  Cut in the DCA ToPrim Vtx
-               if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
-                 if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
-                   fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
-                 if( (dcaPos>0.115) && (dcaNeg>0.115) ) 
-                   fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
-                 if( (dcaPos>0.12) && (dcaNeg>0.12) )
-                   fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
-                 if( (dcaPos>0.2) && (dcaNeg>0.2) )
-                   fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
-                 if( (dcaPos>0.15) && (dcaNeg>0.1) )
-                   fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,5);
-                 if( (dcaPos>0.2) && (dcaNeg>0.1) )
-                   fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,6);
-                 if( (dcaPos>0.25) && (dcaNeg>0.1) )
-                   fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,7);
+               if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
 
+                 Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+                 fLambdaAssocMassPtDCAPV[curCentBin]->Fill(effLambdadcaPV);
                }                 
 
-               // cut in the number of tpc ckusters
-               if( (dcaPos>0.1) && (dcaNeg>0.1) ){
-                 if( (nClsTPCPos>70) && (nClsTPCNeg>70) )  // default value
-                   fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
-                 if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
-                   fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
-                 if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
-                   fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
-                 if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
-                   fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
+               // cut in the number of tpc clusters
+               if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
+                
+                 Double_t effLambdaTPCcls[5]  = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+                 fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effLambdaTPCcls);
                }
 
              } // End selection for systematics
@@ -2674,17 +3271,23 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
            // Embeded particles
            if(!isNaturalPart){
 
-             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
              
                if( TMath::Abs(rapAs)<fYMax ){
+
+                 Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
+                 Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
+                 Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
+                 Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
+
                  // Distributions for the efficiency (systematics chechks)
-                 fLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
-                 fLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,zv);
-                 fLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,dca);
-                 fLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,cpa);
+                 fLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effLambda);
+                 fLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effLambdaVtx);
+                 fLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effLambdaDCA);
+                 fLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effLambdaCPA);
 
                  if( !isCandidate2K0s && !isCandidate2LambdaBar)
-                   fLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
+                   fLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effLambda);
                }
 
              } // End selection in the dca to prim. vtx and the number of clusters
@@ -2693,33 +3296,15 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              if( TMath::Abs(rapAs)<fYMax ){ 
 
                //  Cut in the DCA ToPrim Vtx
-               if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
-                 if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
-                   fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
-                 if( (dcaPos>0.115) && (dcaNeg>0.115) ) 
-                   fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
-                 if( (dcaPos>0.12) && (dcaNeg>0.12) )
-                   fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
-                 if( (dcaPos>0.2) && (dcaNeg>0.2) )
-                   fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
-                 if( (dcaPos>0.15) && (dcaNeg>0.1) )
-                   fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,5);
-                 if( (dcaPos>0.2) && (dcaNeg>0.1) )
-                   fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,6);
-                 if( (dcaPos>0.25) && (dcaNeg>0.1) )
-                   fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,7);
+               if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+                 Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+                 fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effLambdadcaPV);
                }                 
 
-               // cut in the number of tpc ckusters
+               // cut in the number of tpc clusters
                if( (dcaPos>0.1) && (dcaNeg>0.1) ){
-                 if( (nClsTPCPos>70) && (nClsTPCNeg>70) )  // default value
-                   fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
-                 if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
-                   fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
-                 if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
-                   fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
-                 if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
-                   fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
+                 Double_t effLambdaTPCcls[5]  = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+                 fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effLambdaTPCcls);
                }
 
              } // End selection for systematics
@@ -2727,13 +3312,13 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
            }  // End embeded particle selection
            
          } // End Lambda selection
-
+         
          // AntiLambda:
-         if (ctAL && lCheckMcAntiLambda){
+         if (ctAL && lCheckMcAntiLambda  && (TMath::Abs(nsigNegProton)<fNSigma) ){
            
            if(isNaturalPart){
 
-             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
 
                fAntiLambdaAssocPt->Fill(ptAs);
                fAntiLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
@@ -2741,19 +3326,33 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
   
                // Rapidity cut
                if(TMath::Abs(rapAs)<fYMax)  {
+  
+                 Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
+                 Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
+                 Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
+                 Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
 
                  // Distributions for the efficiency (systematics chechks)
-                 fAntiLambdaAssocMassPtRap[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
-                 fAntiLambdaAssocMassPtVtx[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,zv);
-                 fAntiLambdaAssocMassPtDCADaug[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,dca);
-                 fAntiLambdaAssocMassPtCPA[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,cpa);
+                 fAntiLambdaAssocMassPtRap[curCentBin]->Fill(effAntiLambda);
+                 fAntiLambdaAssocMassPtVtx[curCentBin]->Fill(effAntiLambdaVtx);
+                 fAntiLambdaAssocMassPtDCADaug[curCentBin]->Fill(effAntiLambdaDCA);
+                 fAntiLambdaAssocMassPtCPA[curCentBin]->Fill(effAntiLambdaCPA);
 
                  if( !isCandidate2K0s && !isCandidate2Lambda )
-                   fAntiLambdaAssocMassPtRap2[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
+                   fAntiLambdaAssocMassPtRap2[curCentBin]->Fill(effAntiLambda);
                }
 
                fAntiLambdaMCResEta->Fill(resEta,pt,centrality);
                fAntiLambdaMCResPhi->Fill(resPhi,pt,centrality);
+               fAntiLambdaMCResPt->Fill(resPt,pt,centrality);
+               
+               fAntiLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
+               fAntiLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
+               fAntiLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
+
+               fAntiLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
+               fAntiLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
+               fAntiLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
 
              } // End selection in the dca to prim. vtx and the number of clusters
 
@@ -2761,33 +3360,16 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              if( TMath::Abs(rapAs)<fYMax ){ 
                
                //  Cut in the DCA ToPrim Vtx
-               if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
-                 if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
-                   fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
-                 if( (dcaPos>0.115) && (dcaNeg>0.115) ) 
-                   fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
-                 if( (dcaPos>0.12) && (dcaNeg>0.12) )
-                   fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
-                 if( (dcaPos>0.2) && (dcaNeg>0.2) )
-                   fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
-                 if( (dcaPos>0.15) && (dcaNeg>0.1) )
-                   fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,5);
-                 if( (dcaPos>0.2) && (dcaNeg>0.1) )
-                   fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,6);
-                 if( (dcaPos>0.25) && (dcaNeg>0.1) )
-                   fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,7);
+               if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+                 
+                 Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+                 fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(effAntiLambdadcaPV);
                }                 
 
-               // cut in the number of tpc ckusters
-               if( (dcaPos>0.1) && (dcaNeg>0.1) ){
-                 if( (nClsTPCPos>70) && (nClsTPCNeg>70) )  // default value
-                   fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
-                 if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
-                   fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
-                 if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
-                   fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
-                 if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
-                   fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
+               // cut in the number of tpc clusters
+               if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
+                 Double_t effAntiLambdaTPCcls[5]  = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+                 fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effAntiLambdaTPCcls);
                }
 
              } // End selection for systematics
@@ -2796,17 +3378,23 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
            // Embeded particles
            if(!isNaturalPart){
 
-             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+             if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
 
                if( TMath::Abs(rapAs)<fYMax ){
+
+                 Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
+                 Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
+                 Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
+                 Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
+
                  // Distributions for the efficiency (systematics chechks)
-                 fAntiLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
-                 fAntiLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,zv);
-                 fAntiLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,dca);
-                 fAntiLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,cpa);
+                 fAntiLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effAntiLambda);
+                 fAntiLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effAntiLambdaVtx);
+                 fAntiLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effAntiLambdaDCA);
+                 fAntiLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effAntiLambdaCPA);
 
                  if( !isCandidate2K0s && !isCandidate2Lambda )
-                   fAntiLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
+                   fAntiLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effAntiLambda);
                }
 
              } // End selection in the dca to prim. vtx and the number of clusters
@@ -2816,38 +3404,24 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              if( TMath::Abs(rapAs)<fYMax ){ 
 
                //  Cut in the DCA ToPrim Vtx
-               if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
-                 if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
-                   fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
-                 if( (dcaPos>0.095) && (dcaNeg>0.095) )
-                   fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
-                 if( (dcaPos>0.115) && (dcaNeg>0.115) ) 
-                   fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
-                 if( (dcaPos>0.12) && (dcaNeg>0.12) )
-                   fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
-                 if( (dcaPos>0.2) && (dcaNeg>0.2) )
-                   fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,5);
-                 if( (dcaPos>0.5) && (dcaNeg>0.5) )
-                   fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,6);
+               if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+
+                 Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+                 fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effAntiLambdadcaPV);
                }                 
 
                // cut in the number of tpc ckusters
                if( (dcaPos>0.1) && (dcaNeg>0.1) ){
-                 if( (nClsTPCPos>70) && (nClsTPCNeg>70) )  // default value
-                   fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
-                 if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
-                   fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
-                 if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
-                   fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
-                 if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
-                   fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
+
+                 Double_t effAntiLambdaTPCcls[5]  = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+                 fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effAntiLambdaTPCcls);
                }
 
              } // End selection for systematics
 
            }  // End embeded particle selection
-           
-         } // End AntiLambda:
+         
+         } // End AntiLambda
          // Xi decay:
          if( lComeFromXi && isNaturalPart ){
            if(lPDGCodeV0==3122) { fLambdaAssocFromXi->Fill(ptAs,centrality); }
@@ -2855,7 +3429,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          }
 
        } // End Primary V0 selection
-       
+       
        // After the kinematical selection of K0s and Lambdas
        // it might be that the daugthers are not identified through MC Association
        if(lMCAssocNegDaug==0)
@@ -2868,43 +3442,8 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
     }// End Correlation Step
    
     // ************************************
-  noas:
-
-    /*
-      Float_t pPos = -100.;
-      Float_t pNeg = -100.;
-    
-      Float_t dedxPos = -1000.;
-      Float_t dedxNeg = -1000.;
-      Float_t nsigPosPion   = 0.;
-      Float_t nsigNegPion   = 0.;
-      Float_t nsigPosProton = 0.;
-      Float_t nsigNegProton = 0.;
-
-      if(fUsePID && !fIsMC) {     
-      const AliAODPid *pidNeg = ntrack->GetDetPid();
-      const AliAODPid *pidPos = ptrack->GetDetPid();
-      
-      if (pidNeg && pidPos) {
-      pPos = pidPos->GetTPCmomentum();
-      pNeg = pidNeg->GetTPCmomentum();
-      dedxPos = pidPos->GetTPCsignal()/47.; 
-      dedxNeg = pidNeg->GetTPCsignal()/47.; 
   
-
-      if(pPos<1.){
-      nsigPosPion   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
-      nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
-      }
-      if(pNeg<1.){
-      nsigNegPion   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
-      nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
-      }
-
-      }
-
-      }
-    */
+  noas:
 
     // Comparing the pt of the trigger particle wrt the v0-candidate's daughter:
     // It is used as well for the side-band subtraction
@@ -2915,23 +3454,15 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
       isSameTrkNegDaug = SameTrack(trkTrig,ntrack);
     }
 
-    // *******************
-    //   Gamma conversion
-    // *******************
-    if(step==kReconstruction)
-      if( (TMath::Sqrt(lPtArmV0*lPtArmV0 + lAlphaV0*lAlphaV0) < 0.2)  && isNaturalPart ){
-       fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 2) );
-      }
-
     // *******************
     //   K0s selection
     // *******************
-    if (ctK && (TMath::Abs(v0->RapK0Short())<fYMax) && ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && ( massK0s > 0.3979 && massK0s < 0.5981 ) ) {
+    if (ctK && (TMath::Abs(rapK0s)<fYMax) && ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && ( massK0s > 0.3979 && massK0s < 0.5981 ) ) {
       
       switch(step) {
       case kTriggerCheck: 
 
-       if (isCandidate2K0s && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+       if (isCandidate2K0s && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
 
          if(pt>ptTrig){
            fIsV0LP = 1; 
@@ -2970,7 +3501,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              // Negative daughter
              if( isSameTrkNegDaug==1 ){ 
                for(Int_t i=0;i<3;i++)
-                 fCheckIDTrigPtK0s->Fill(difPosP[i],i+3,pt); 
+                 fCheckIDTrigPtK0s->Fill(difNegP[i],i+3,pt); 
                fCheckIDTrigPhiK0s->Fill(negDeltaPhi,2.,pt);
                fCheckIDTrigEtaK0s->Fill(negDeltaEta,2.,pt);
                fCheckIDTrigNclsK0s->Fill(nClsTPCNeg,2.,pt);
@@ -2982,6 +3513,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
            fTriggerParticles->RemoveAt(iArray);
            fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
            
+
          } // Close isTrigFromV0daug
          
        }// End K0s Mass cut
@@ -2989,18 +3521,20 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
        break; // End K0s selection for TriggerCheck
       case kReconstruction:
        
-       if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) && (pt<10.) ){
+       if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
          
          if(isNaturalPart) fK0sMass->Fill(massK0s,pt,centrality);
          else fK0sMassEmbeded->Fill(massK0s,pt,centrality);
          
          fK0sMassPtEta->Fill(massK0s,pt,lEta);
-         fK0sMassPtRap->Fill(massK0s,pt,v0->RapK0Short());
+         fK0sMassPtRap[curCentBin]->Fill(massK0s,pt,rapK0s);
          fK0sMassPtPhi->Fill(massK0s,pt,lPhi);
 
+         
          if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
            fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 3) );
          
+
        }
 
        if( fDoQA && lCheckMcK0Short && isNaturalPart && (pt<10.) ){ // Quality Assurance
@@ -3008,14 +3542,14 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          // Invariant Mass cut
          if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
 
-           if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+           if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
              fK0sDCAPosDaug->Fill(dcaPos,pt);
              fK0sDCANegDaug->Fill(dcaNeg,pt);
            }
 
            if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
 
-             if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+             if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC ) ){
                fK0sPtPosDaug->Fill(pt,lPtPos);
                fK0sPtNegDaug->Fill(pt,lPtNeg);
 
@@ -3041,14 +3575,14 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
              TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s  ) {
 
-           if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+           if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
              fK0sBckgDCAPosDaug->Fill(dcaPos,pt);
              fK0sBckgDCANegDaug->Fill(dcaNeg,pt);
            }
            
            if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
 
-             if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+             if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
                fK0sBckgPtPosDaug->Fill(pt,lPtPos);
                fK0sBckgPtNegDaug->Fill(pt,lPtNeg);
              
@@ -3086,12 +3620,12 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
     // *******************
     // Lambda selection
     // *******************
-    if ( ctL && (TMath::Abs(v0->RapLambda())<fYMax) && (massLambda > 1.0649 && massLambda < 1.1651 ) ){
+    if ( ctL && (TMath::Abs(rapLambda)<fYMax) && (massLambda > 1.0649 && massLambda < 1.1651 ) && (TMath::Abs(nsigPosProton)<fNSigma) ){
 
       switch(step) {
       case kTriggerCheck: 
        
-       if (isCandidate2Lambda && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70 ) && !isCandidate2K0s && !isCandidate2LambdaBar ){
+       if (isCandidate2Lambda && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && !isCandidate2K0s && !isCandidate2LambdaBar ){
 
          if(pt>ptTrig) {
            fIsV0LP = 1;
@@ -3130,7 +3664,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              // Negative daughter
              if( isSameTrkNegDaug==1 ){ 
                for(Int_t i=0;i<3;i++)
-                 fCheckIDTrigPtLambda->Fill(difPosP[i],i+3,pt); 
+                 fCheckIDTrigPtLambda->Fill(difNegP[i],i+3,pt); 
                fCheckIDTrigPhiLambda->Fill(negDeltaPhi,2.,pt);
                fCheckIDTrigEtaLambda->Fill(negDeltaEta,2.,pt);
                fCheckIDTrigNclsLambda->Fill(nClsTPCNeg,2.,pt);
@@ -3147,7 +3681,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
        break; // End Lambda selection for TriggerCheck
       case kReconstruction:
        
-       if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70 ) && (pt<10.) ){
+       if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
 
          if(isNaturalPart) fLambdaMass->Fill(massLambda,pt,centrality);
          else  fLambdaMassEmbeded->Fill(massLambda,pt,centrality);
@@ -3158,12 +3692,14 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          }
 
          fLambdaMassPtEta->Fill(massLambda,pt,lEta);
-         fLambdaMassPtRap->Fill(massLambda,pt,v0->RapLambda());        
+         fLambdaMassPtRap[curCentBin]->Fill(massLambda,pt,rapLambda);  
          fLambdaMassPtPhi->Fill(massLambda,pt,lPhi);
 
+         
          if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
            fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 4) );
-                 
+         
+         
        }
        
        // Invariant Mass cut
@@ -3172,14 +3708,14 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          // Invariant Mass cut
          if (TMath::Abs(mLambda-massLambda) < 3*sL) {
 
-           if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+           if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
              fLambdaDCAPosDaug->Fill(dcaPos,pt);
              fLambdaDCANegDaug->Fill(dcaNeg,pt);
            }
 
            if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
 
-             if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+             if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
                fLambdaPtPosDaug->Fill(pt,lPtPos);
                fLambdaPtNegDaug->Fill(pt,lPtNeg);
 
@@ -3206,14 +3742,14 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          if( (TMath::Abs(mLambda-massLambda + 6.5*sL) < 1.5*sL) ||
              (TMath::Abs(mLambda-massLambda - 6.5*sL) < 1.5*sL) ){
 
-           if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+           if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
              fLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
              fLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
            }       
 
            if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
 
-             if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+             if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
                fLambdaBckgPtPosDaug->Fill(pt,lPtPos);
                fLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
 
@@ -3250,12 +3786,12 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
     // *******************
     // AntiLambda selection
     // *******************
-    if ( ctAL && (TMath::Abs(v0->RapLambda())<fYMax)  && (massAntiLambda > 1.0649 && massAntiLambda < 1.1651 ) ) {
+    if ( ctAL && (TMath::Abs(rapLambda)<fYMax)  && (massAntiLambda > 1.0649 && massAntiLambda < 1.1651 ) && (TMath::Abs(nsigNegProton)<fNSigma) ) {
       
       switch(step) {
       case kTriggerCheck: 
        
-       if (isCandidate2LambdaBar && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) &&  !isCandidate2K0s && !isCandidate2Lambda ){
+       if (isCandidate2LambdaBar && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) &&  !isCandidate2K0s && !isCandidate2Lambda ){
 
          if(pt>ptTrig) {
            fIsV0LP = 1;
@@ -3294,7 +3830,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
              // Negative daughter
              if( isSameTrkNegDaug==1 ){ 
                for(Int_t i=0;i<3;i++)
-                 fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i+3,pt); 
+                 fCheckIDTrigPtAntiLambda->Fill(difNegP[i],i+3,pt); 
                fCheckIDTrigPhiAntiLambda->Fill(negDeltaPhi,2.,pt);
                fCheckIDTrigEtaAntiLambda->Fill(negDeltaEta,2.,pt);
                fCheckIDTrigNclsAntiLambda->Fill(nClsTPCNeg,2.,pt);
@@ -3302,6 +3838,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
 
            } // End check ID  
 
+
            fTriggerParticles->RemoveAt(iArray);
            fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
 
@@ -3311,7 +3848,7 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
        break; // End AntiLambda selection for CheckTrigger
       case kReconstruction: 
        
-       if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70 ) && (pt<10.) ) {
+       if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ) {
 
          if(isNaturalPart)  fAntiLambdaMass->Fill(massAntiLambda,pt,centrality);
          else fAntiLambdaMassEmbeded->Fill(massAntiLambda,pt,centrality);
@@ -3322,12 +3859,13 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          }
 
          fAntiLambdaMassPtEta->Fill(massAntiLambda,pt,lEta);
-         fAntiLambdaMassPtRap->Fill(massAntiLambda,pt,v0->RapLambda());          
+         fAntiLambdaMassPtRap[curCentBin]->Fill(massAntiLambda,pt,rapLambda);    
          fAntiLambdaMassPtPhi->Fill(massAntiLambda,pt,lPhi);
        
+         
          if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
            fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 5) );
-
+         
        }
  
        if( fDoQA && lCheckMcAntiLambda && isNaturalPart && (pt<10.) ){ // Quality Assurance
@@ -3335,29 +3873,29 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          // Invariant Mass cut
          if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) {
 
-           if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+           if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
              fAntiLambdaDCAPosDaug->Fill(dcaPos,pt);
              fAntiLambdaDCANegDaug->Fill(dcaNeg,pt);
            }
 
            if( (dcaPos>0.1) && (dcaNeg>0.1) ){
              
-             if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
-                 fAntiLambdaPtPosDaug->Fill(pt,lPtPos);
-                 fAntiLambdaPtNegDaug->Fill(pt,lPtNeg);
+             if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+               fAntiLambdaPtPosDaug->Fill(pt,lPtPos);
+               fAntiLambdaPtNegDaug->Fill(pt,lPtNeg);
                  
-                 fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
-                 fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
+               fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
+               fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
                  
-                 fAntiLambdaDecayPos->Fill(dx,dy,pt);
-                 fAntiLambdaDecayVertex->Fill(lt,pt);
+               fAntiLambdaDecayPos->Fill(dx,dy,pt);
+               fAntiLambdaDecayVertex->Fill(lt,pt);
                  
-                 fAntiLambdaCPA->Fill(cpa,pt); 
-                 fAntiLambdaDCAV0Daug->Fill(dca,pt); 
+               fAntiLambdaCPA->Fill(cpa,pt); 
+               fAntiLambdaDCAV0Daug->Fill(dca,pt); 
                  
-                 fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
-                 fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
-               }
+               fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
+               fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
+             }
              
              fAntiLambdaNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
              fAntiLambdaNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
@@ -3368,14 +3906,14 @@ void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTrigge
          if( (TMath::Abs(mLambda-massAntiLambda + 6.5*sAL) < 1.5*sAL) ||
              (TMath::Abs(mLambda-massAntiLambda - 6.5*sAL) < 1.5*sAL) ){
 
-           if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+           if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
              fAntiLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
              fAntiLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
            }
 
            if( (dcaPos>0.1) && (dcaNeg>0.1) ){
 
-             if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){              
+             if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){           
                fAntiLambdaBckgPtPosDaug->Fill(pt,lPtPos);
                fAntiLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
              
@@ -3436,24 +3974,31 @@ void AliAnalysisTaskLambdaOverK0sJets::TriggerParticle()
   Float_t centrality = cent->GetCentralityPercentile("V0M");
   const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
   Float_t zv=vtx->GetZ();
+  Double_t pt  = -1000.;
+  Double_t eta = -1000.;
+  Double_t phi = -1000.;
+  Float_t resPt = -1000.; 
+  Float_t resEta = -1000.; 
+  Float_t resPhi = -1000.;
 
   for (Int_t i=0; i<nTrk; i++) {
-    AliAODTrack *t = fAOD->GetTrack(i);
+    const AliAODTrack *t = fAOD->GetTrack(i);
     if(!AcceptTrack(t)) continue;
-    Double_t pt=t->Pt();
-    Double_t eta=t->Eta();
-    Double_t phi=t->Phi();
-  
+    pt=t->Pt();
+    eta=t->Eta();
+   
     if( (pt>fTrigPtMin)  && (pt<fTrigPtMax) &&  (TMath::Abs(eta)<fTrigEtaMax) ) {
+
+      phi=t->Phi();
       fTriggerParticles->Add( new AliMiniParticle(centrality, zv, i, pt, phi, eta, 0, 0, 1) );    
 
       if(fIsMC){    
        Int_t lab = TMath::Abs(t->GetLabel());
        AliAODMCParticle *part=(AliAODMCParticle*)stack->UncheckedAt(lab);
 
-       Float_t resPt  = (part->Pt()  - pt)/pt; 
-       Float_t resEta = part->Eta() - eta;     
-       Float_t resPhi = part->Phi() - phi;
+       resPt  = (part->Pt()  - pt)/pt; 
+       resEta = part->Eta() - eta;     
+       resPhi = part->Phi() - phi;
 
        fTriggerMCResPt->Fill(resPt,pt,centrality);
        fTriggerMCResEta->Fill(resEta,pt,centrality);
@@ -3466,11 +4011,13 @@ void AliAnalysisTaskLambdaOverK0sJets::TriggerParticle()
   // ----------------------------
   // 2. Checking if the trigger particle 
   // might be a daughter from the V0-candidate
+  
   for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
     AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
     Int_t id = trig->ID();
     V0Loop(kTriggerCheck,kFALSE,i,id);
   }
+  
     
 }
 
@@ -3527,15 +4074,28 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
   if (!cent->IsEventInCentralityClass(fCentMin,fCentMax,"V0M")) return;
   fEvents->Fill(3);
 
-  // Primary vertex
+  // Global primary vertex 
   const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
   if (vtx->GetNContributors()<3) return;
   fEvents->Fill(4);
 
-  Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
+  // SPD primary vertex 
+  const AliAODVertex *vtxSPD = fAOD->GetPrimaryVertexSPD(); 
+  if (vtxSPD->GetNContributors()<3) return;
+  fEvents->Fill(5);
+  
+  // Correlaiton between global Zvtx and SPD Zvtx
+  Float_t zv=vtx->GetZ(), zvSPD=vtxSPD->GetZ();
+  fPrimayVtxGlobalvsSPD->Fill(zv,zvSPD);
+  
+  if( TMath::Abs( zv - zvSPD ) > 0.5) return;
+  fEvents->Fill(6);
+
+  Float_t xv=vtx->GetX(), yv=vtx->GetY();
+  const Float_t priVtx[3] = {xv,yv,zv};
 
   if (TMath::Abs(zv) > 10.) return;   
-  fEvents->Fill(5);
+  fEvents->Fill(7);
  
   fPrimaryVertexX->Fill(xv);
   fPrimaryVertexY->Fill(yv);
@@ -3558,6 +4118,9 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
   eventPlane = ( (eventPlane < 0) ? eventPlane + TMath::Pi() : eventPlane );
   eventPlane = ( ( eventPlane > TMath::Pi() ) ? eventPlane - TMath::Pi() : eventPlane );
  
+  // Magnetic field sign
+  const Float_t bSign = (fAOD->GetMagneticField() > 0) ? 1 : -1;
+
   // Getting PID Response
   fPIDResponse = hdr->GetPIDResponse();
 
@@ -3584,9 +4147,8 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
       if(fIsV0LP)  fCheckTriggerFromV0Daug->Fill(2);
     }
     else if( trig->WhichCandidate()==1){
-      fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
-      fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
       fCheckTriggerFromV0Daug->Fill(0);
+      fTriggerPtCentCh->Fill(trig->Pt(),centrality,zv);
 
       phi2 = ( (trig->Phi() > TMath::Pi()) ? trig->Phi() - TMath::Pi() : trig->Phi() )  ;
       fTriggerEventPlane->Fill(phi2);
@@ -3700,6 +4262,10 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
       Float_t lPhiCurrentPart = p0->Phi();
       Float_t lPtCurrentPart  = p0->Pt();
 
+      if(fUseEtaCut){
+       lRapCurrentPart = lEtaCurrentPart;
+      }
+
       Int_t iCurrentMother = p0->GetMother();       
       AliAODMCParticle *pCurrentMother = (AliAODMCParticle *)stack->At(iCurrentMother);
       Int_t lPdgCurrentMother = 0;    
@@ -3718,15 +4284,15 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
       if (!pDaughter0 || !pDaughter1) continue; 
    
       /*
-      if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
-          TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
+       if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
+       TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
        continue;       
       */
       // Daughter momentum cut: ! FIX it in case of AOD !
       /*
-      if ( ( pDaughter0->Pt() < fMinPtDaughter ) || 
-          ( pDaughter1->Pt() < fMinPtDaughter )  ) 
-          continue;
+       if ( ( pDaughter0->Pt() < fMinPtDaughter ) || 
+       ( pDaughter1->Pt() < fMinPtDaughter )  ) 
+       continue;
       */
       
       if ((p0->Pt())<pMin || (p0->Pt())>100. ) continue;  
@@ -3748,7 +4314,6 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
        // K0s
        if (lPdgcodeCurrentPart == kK0Short) {
 
-
          fK0sMCPt->Fill(lPtCurrentPart);
          fK0sMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality); 
 
@@ -3756,14 +4321,14 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
            fK0sMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
            fK0sMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
          
-           if(TMath::Abs(lRapCurrentPart)<0.7)  fK0sMCPtRapVtx->Fill(lPtCurrentPart,zv,centrality);
+           if(TMath::Abs(lRapCurrentPart)<fYMax)  fK0sMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
          
            if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
              fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 3) );
          }
          else{ 
            fK0sMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality); 
-           if(TMath::Abs(lRapCurrentPart)<0.7)  fK0sMCPtRapVtxEmbeded->Fill(lPtCurrentPart,zv,centrality);
+           if(TMath::Abs(lRapCurrentPart)<fYMax)  fK0sMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
          }
 
        } // End K0s selection
@@ -3777,14 +4342,14 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
            fLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
            fLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
            
-           if(TMath::Abs(lRapCurrentPart)<0.7) fLambdaMCPtRapVtx->Fill(lPtCurrentPart,zv,centrality);
+           if(TMath::Abs(lRapCurrentPart)<fYMax) fLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
 
            if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
              fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 4) );
          }
          else{ 
            fLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality); 
-           if(TMath::Abs(lRapCurrentPart)<0.7) fLambdaMCPtRapVtxEmbeded->Fill(lPtCurrentPart,zv,centrality);
+           fLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
          }
 
          if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 ) 
@@ -3801,14 +4366,14 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
            fAntiLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);           
            fAntiLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
 
-           if(TMath::Abs(lRapCurrentPart)<0.7) fAntiLambdaMCPtRapVtx->Fill(lPtCurrentPart,zv,centrality);
+           if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
            
            if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
              fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 5) );
          }
          else{ 
            fAntiLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality); 
-           if(TMath::Abs(lRapCurrentPart)<0.7) fAntiLambdaMCPtRapVtxEmbeded->Fill(lPtCurrentPart,zv,centrality);
+           if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
          }
          
          if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 ) 
@@ -3818,13 +4383,15 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
 
       } // End pt selection
       // Xi-
-      if(lPdgcodeCurrentPart == kXiMinus || lPdgcodeCurrentPart == 3322){
+      /*
+       if(lPdgcodeCurrentPart == kXiMinus || lPdgcodeCurrentPart == 3322){
 
        if( isNaturalPart )
-         fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 6) );
+       fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 6) );
+
+       } //End Xi
+      */
 
-      } //End Xi
-     
     } // End loop over MC
     
     // -----------------------------------------
@@ -3867,117 +4434,12 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
                fAntiLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
            } // End pt bin
 
-       // Xi Minus (h-Xi correlations)
-       if( (assocMC->WhichCandidate()==6) ){
-
-         fXiMinusPtMCAssoc->Fill(assocMC->Pt(),centrality);
-
-         for(Int_t k=0;k<kN2;k++)
-           if( (assocMC->Pt()>=kPtBinV02[k]) && (assocMC->Pt()<kPtBinV02[k+1]) ){
-             if(triggerMCPt<fTrigPtMax)
-               fXiMinusdPhidEtaMC[curCentBin*kN2+k]->Fill(dPhiMC,dEtaMC,zv);
-             else
-               fXiMinusdPhidEtaMC2[curCentBin*kN2+k]->Fill(dPhiMC,dEtaMC,zv);
-           } // End pt bin
-
-       } // End Xi selection
-       
       } // End loop over trigger particles
 
     } // End loop over trigger particles
 
-    // -----------------------------------------
-    // ---------- MC Correlations --------------
-    // -------- Xi leading particle ------------
-    // -----------------------------------------
-    
-    // With natural Xi's do loop over the MC trigger particle 
-    // to see if Xi are the leading particle in the event:
-    // in that case, does the correlations with charged particles as associated particles
-    
-    Bool_t isXiLP = kFALSE;
-    for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
-      
-      AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
-      if(!p0) continue;
-    
-      // ----------------------------------------
-      // Selecting only Xi Minus
-      Int_t lPdgcodeCurrentPart = p0->GetPdgCode();     
-      if ( (lPdgcodeCurrentPart != kXiMinus) ||
-          (lPdgcodeCurrentPart != 3322)  ) continue;
-      
-      // ----------------------------------------
-      Int_t isNaturalPart = 1;
-      if ( (iTrkMC>=fEndOfHijingEvent) && 
-          (fEndOfHijingEvent!=-1)     && 
-          (p0->GetMother()<0) ) 
-       isNaturalPart = 0; 
-
-      if(!isNaturalPart) continue;
-
-      // ----------------------------------------
-      // Loop over Trigger particles
-      isXiLP = kFALSE; 
-      for(Int_t ii=0; ii<(fTriggerPartMC->GetEntriesFast()); ii++){
-         AliMiniParticle* trigMC = (AliMiniParticle*) fTriggerPartMC->At(ii);
-
-         if( p0->Pt() > trigMC->Pt() )   isXiLP = kTRUE;
-         else  isXiLP = kFALSE;       
-         
-         if( isXiLP == kFALSE ) break;
-
-      } // End loop over trigger particles
-
-      // ----------------------------------------
-      // Xi is Leading particle 
-      if(isXiLP){
-       fXiMinusPtMCTrigger->Fill(p0->Pt(),centrality);
-       fXiTriggerPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, p0->Pt(), p0->Phi(), p0->Eta(), 0, 0, 10) ); 
-      }
-
-    }
-
-    // ----------------------------------------
-    // Xi-h:  Do correlations with primary particles
-    if(isXiLP){
-      for(Int_t ii=0; ii<(fXiTriggerPartMC->GetEntriesFast()); ii++){
-       AliMiniParticle* trigXiMC = (AliMiniParticle*) fXiTriggerPartMC->At(ii);        
-
-       // ========= Charged particles
-       for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){        
-         AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
-         if(!p0) continue;
-         
-         // ----------------------------------------     
-         Int_t isNaturalPart = 1;
-         if ( (iTrkMC>=fEndOfHijingEvent) && 
-              (fEndOfHijingEvent!=-1)     && 
-              (p0->GetMother()<0) ) 
-           isNaturalPart = 0;    
-         // ----------------------------------------
-         
-         if(p0->Charge()==0) continue;
-         if(isNaturalPart == 0) continue;
-         if( !p0->IsPhysicalPrimary() ) continue;
-         
-         if(TMath::Abs(p0->Eta())>fTrigEtaMax) continue;
-         
-         dPhiMC = dPHI(trigXiMC->Phi(),p0->Phi());
-         dEtaMC = trigXiMC->Eta() - p0->Eta();
-
-         for(Int_t k=0;k<kN1;k++)   // Pt bin
-           if( (p0->Pt()>=kPtBinV03[k]) && (p0->Pt()<kPtBinV03[k+1]) )
-             fXiMinusdPhidEtaMC3[curCentBin*kN3+k]->Fill(dPhiMC,dEtaMC,zv);
-         
-       } // End loop over primary particles
-       
-      } // end loop over Xi
-     
-    } // End condition of Xi is LP
-    
   } // End MC condition
+  
   // *************************************************
   // V0 loop - AOD
   fAssocParticles = new TObjArray(); 
@@ -3985,11 +4447,13 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
   if(NtrigPerEvnt>0)
     V0Loop(kReconstruction,kTRUE,-1,-1);
   else 
-    V0Loop(kReconstruction,kFALSE,-1,-1);
-  
+    V0Loop(kReconstruction,kFALSE,-1,-1); 
   //-------------------------------------------------------------
   // Correlations
   //-------------------------------------------------------------
+
+  // variables for correlations:
   Float_t ptTrig=0., pxTrig=0., pyTrig=0.;
   Float_t massK0s=0., mK0s=0., sK0s=0.;
   Float_t massL=0.,   mL=0.,   sL=0.;
@@ -3997,18 +4461,36 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
   Float_t pt=-100., pxAssoc=-1000., pyAssoc=-1000.;
   Float_t lPhi=0., lEta=0.;
   Float_t lAlphaV0=0., lPtArmV0=0, dcaPos=0., dcaNeg=0.;
-  Float_t dx=-100., dy=-100., dz=-100., lt=-100., res=-100.;
+  Float_t dx=-100., dy=-100., lt=-100., res=-100.;
   Float_t dlK=-100., dlL=-100.;
   Float_t dPhi=-100., dEta=-100., radio=-100.;
 
-  
+  // variables for track splititing checks:
+  Float_t  posdPhiS = -9999., posdEtaS = -9999., negdPhiS = -9999., negdEtaS = -9999.; 
+  Float_t  fracTrigTPCSharedMap=-1., fracPosDaugTPCSharedMap =-1., fracNegDaugTPCSharedMap =-1.;
+  //Bool_t   trigTPCMapOk=kTRUE, posDaugTPCMapOk=kTRUE, negDaugTPCMapOk=kTRUE;  
+  Float_t  RdPhiStarMaxPosDaug=-1., RdPhiStarMaxNegDaug=-1., den=1.;
+  Double_t trigCov[21], posDaugCov[21], negDaugCov[21];
+  Double_t trigPos[6], posDaugPos[6], negDaugPos[6];
+  Double_t trigXYZ[3], posDaugXYZ[3], negDaugXYZ[3];
+  Double_t devPosDaugTrig[9], devNegDaugTrig[9], splitCont[9],  splitCont2[12];
+  Int_t    sameSignPosDaug = -1, sameSignNegDaug = -1;
+  Float_t  sameLabelPosDaug = 0., sameLabelNegDaug = 0.;
+  Int_t    tlab, nlab, plab;
+  Double_t resdEtsSdPhiS[6]; 
+
+  // --------------------------------
+  // h-V0 correlations
   for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
     AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
     if( trig->WhichCandidate() == 0 ) continue;
 
-    AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
+    const AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
     ptTrig = tTrig->Pt();  pxTrig = tTrig->Px();  pyTrig = tTrig->Py(); 
 
+    // ---------------- Fraction of TPC Shared Cluster: 
+    fracTrigTPCSharedMap = GetFractionTPCSharedCls(tTrig);
+  
     for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
       AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
       AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
@@ -4036,7 +4518,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
       pt = trackAssocME->Pt(); pxAssoc = tAssoc->Px(); pyAssoc = tAssoc->Py(); 
       // Decay vertex
       Double_t xyz[3]; tAssoc->GetSecondaryVtx(xyz);
-      dx=xyz[0]-xv; dy=xyz[1]-yv; dz=xyz[2]-zv;
+      dx=xyz[0]-xv; dy=xyz[1]-yv; //dz=xyz[2]-zv;
       // Decay length: 2D 
       lt=TMath::Sqrt(dx*dx + dy*dy); 
       // Spatial resolution trigger-V0 point decay
@@ -4051,17 +4533,316 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
       Int_t lMCAssocNegDaug = trackAssocME->NegDaugMCLabel();
       Int_t lMCAssocPosDaug = trackAssocME->PosDaugMCLabel();
 
-      // *******************
-      //   Gamma conversion
-      // *******************
-      if( trackAssocME->WhichCandidate() == 2 )
-       fGammaConversiondPhidEta[curCentBin]->Fill(dPhi,dEta,zv);
+      // ----------------------------------------------------------------------------
+
+      // -----------------------------------------------------------------
+      //   ****************** Track splitting check ******************
+      // -----------------------------------------------------------------
+
+      sameLabelPosDaug = 0.; sameLabelNegDaug = 0.;
+      sameSignPosDaug = -1; sameSignNegDaug = -1;
+      RdPhiStarMaxPosDaug=-1.; RdPhiStarMaxNegDaug=-1.;
+      //trigTPCMapOk=kTRUE; posDaugTPCMapOk=kTRUE; negDaugTPCMapOk=kTRUE;
+      fracPosDaugTPCSharedMap=0; fracNegDaugTPCSharedMap=0;
 
+      // ---------------- Fraction of TPC Shared Cluster 
+      fracPosDaugTPCSharedMap = GetFractionTPCSharedCls(ptrack);
+      fracNegDaugTPCSharedMap = GetFractionTPCSharedCls(ntrack);
+
+      // =========== Classical methods for track-splitting  ============= //
+      if( TMath::Abs(dPhi)<0.1 && TMath::Abs(dEta)<0.1 ){   
+       
+       // --------- Check sign of the trigger and daughter track:
+       if(tTrig->Charge()==1) { sameSignPosDaug = 1; sameSignNegDaug = 0; }
+       else { sameSignPosDaug = 0; sameSignNegDaug = 1; }
+
+       // -------- Shifting charged tracks to the primary vertex.
+       // -------- See HBT anlayses: 
+
+       // Trigger particle: 
+       SetSftPosR125(tTrig,bSign,priVtx,"Trigger");
+
+       // Positive daughter: calculating delta(phi)* and delta(eta)*
+       SetSftPosR125(ptrack,bSign,priVtx,"Daughter");
+       posdPhiS = dPhiSAtR125();
+       posdEtaS = dEtaS();
+
+       // Negative daughter: calculating delta(phi)* and delta(eta)*
+       SetSftPosR125(ntrack,bSign,priVtx,"Daughter");
+       negdPhiS = dPhiSAtR125();
+       negdEtaS = dEtaS();
+
+       // ------ Get position:
+       tTrig->GetXYZ(trigXYZ);
+       ptrack->GetXYZ(posDaugXYZ);
+       ntrack->GetXYZ(negDaugXYZ);
+
+       // ------ Covaraince matrix for the tracks:
+       tTrig->GetCovarianceXYZPxPyPz(trigCov);
+       ptrack->GetCovarianceXYZPxPyPz(posDaugCov);
+       ntrack->GetCovarianceXYZPxPyPz(negDaugCov);
+
+       // ------- position and momentum:
+       // trigger particle
+       trigPos[0] = trigXYZ[0];        trigPos[1] = trigXYZ[1];        trigPos[2] = trigXYZ[2];
+       trigPos[3] = tTrig->Px();       trigPos[4] = tTrig->Py();       trigPos[5] = tTrig->Pz();
+
+       // positive daughter
+       posDaugPos[0] = posDaugXYZ[0];  posDaugPos[1] = posDaugXYZ[1];  posDaugPos[2] = posDaugXYZ[2];
+       posDaugPos[3] = ptrack->Px();   posDaugPos[4] = ptrack->Py();   posDaugPos[5] = ptrack->Pz();
+
+       // negative daughter
+       negDaugPos[0] = negDaugXYZ[0];  negDaugPos[1] = negDaugXYZ[1];  negDaugPos[2] = negDaugXYZ[2];
+       negDaugPos[3] = ntrack->Px();   negDaugPos[4] = ntrack->Py();   negDaugPos[5] = ntrack->Pz();
+
+       // ------- deviation between the two tracks:
+       // positive daughter
+       for(Int_t ll=0;ll<6;ll++){
+         den = trigCov[ll*(ll+1)/2+ll] +  posDaugCov[ll*(ll+1)/2+ll] ;
+         devPosDaugTrig[ll] = 0.;
+         
+         if(den>0)  devPosDaugTrig[ll] = TMath::Power( trigPos[ll] - posDaugPos[ll] ,2) / den;
+         
+         if(ll<3) devPosDaugTrig[6] +=  devPosDaugTrig[ll];  // sum in X,Y,Z
+         if(ll>2) devPosDaugTrig[7] +=  devPosDaugTrig[ll];  // sum in momemtum
+         devPosDaugTrig[8] +=  devPosDaugTrig[ll];           // sum in all variables
+       }
+
+       // negative daughter
+       for(Int_t ll=0;ll<6;ll++){
+         den = trigCov[ll*(ll+1)/2+ll]  +  negDaugCov[ll*(ll+1)/2+ll] ;
+         devNegDaugTrig[ll] = 0;
+
+         if(den>0)  devNegDaugTrig[ll] = TMath::Power( trigPos[ll] - negDaugPos[ll] ,2) / den;
+         
+         if(ll<3) devNegDaugTrig[6] +=  devNegDaugTrig[ll];  // sum in X,Y,Z
+         if(ll>2) devNegDaugTrig[7] +=  devNegDaugTrig[ll];  // sum in momemtum
+         devNegDaugTrig[8] +=  devNegDaugTrig[ll];           // sum in all variables
+
+       }
+
+
+       // ---------------- Monte Carlo check for track-splitting 
+       if(fIsMC){
+            
+         TList *lst = fAOD->GetList();
+         stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
+         if (!stack) {
+           Printf("ERROR: stack not available");
+           return;
+         }
+
+         sameLabelPosDaug = 1.*SameLabel(tTrig,ptrack);
+         sameLabelNegDaug = 1.*SameLabel(tTrig,ntrack);
+
+         // Resolution of delta(phi)* and delta(eta)*
+         tlab = TMath::Abs(tTrig->GetLabel());
+         plab = TMath::Abs(ptrack->GetLabel());
+         nlab = TMath::Abs(ntrack->GetLabel());
+
+         AliAODMCParticle *tPart=(AliAODMCParticle*)stack->UncheckedAt(tlab);
+         AliAODMCParticle *pPart=(AliAODMCParticle*)stack->UncheckedAt(plab);
+         AliAODMCParticle *nPart=(AliAODMCParticle*)stack->UncheckedAt(nlab);
+
+         resdEtsSdPhiS[0] = pt;
+
+         //positive daughter
+         resdEtsSdPhiS[2] = ptrack->Pt();
+         resdEtsSdPhiS[3] = (tPart->Phi() - pPart->Phi()) - posdPhiS;
+         resdEtsSdPhiS[4] = (tPart->Eta() - pPart->Eta()) - posdEtaS;
+         resdEtsSdPhiS[5] = sameSignPosDaug;
+
+         if( trackAssocME->WhichCandidate() == 3 ){
+           resdEtsSdPhiS[1] = massK0s;
+           fK0sPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+         }
+         if( trackAssocME->WhichCandidate() == 4 ){
+           resdEtsSdPhiS[1] = massL;
+           fLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+         }
+         if( trackAssocME->WhichCandidate() == 5 ){
+           resdEtsSdPhiS[1] = massAL;
+           fAntiLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+         }
+
+         // negative daughter
+         resdEtsSdPhiS[2] = ntrack->Pt();
+         resdEtsSdPhiS[3] = (tPart->Phi() - nPart->Phi()) - negdPhiS;
+         resdEtsSdPhiS[4] = (tPart->Eta() - nPart->Eta()) - negdEtaS;
+         resdEtsSdPhiS[5] = sameSignNegDaug;
+
+         if( trackAssocME->WhichCandidate() == 3 ){
+           resdEtsSdPhiS[1] = massK0s;
+           fK0sNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+         }
+         if( trackAssocME->WhichCandidate() == 4 ){
+           resdEtsSdPhiS[1] = massL;
+           fLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+         }
+         if( trackAssocME->WhichCandidate() == 5 ){
+           resdEtsSdPhiS[1] = massAL;
+           fAntiLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+           }
+          
+       }
+
+       // ================  Alternative methods for track-splitting  ==================
+       if(TMath::Abs(dPhi)<0.02 && TMath::Abs(dEta)<0.02){
+         
+         // --------- Calculate TPCRadius*Delta(phi)Star_Max distance:
+         RdPhiStarMaxPosDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ptrack->Phi(), ptrack->Eta(), ptrack->Pt(), 1, bSign);
+         RdPhiStarMaxNegDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ntrack->Phi(), ntrack->Eta(), ntrack->Pt(), -1, bSign);
+
+         // -------- Comparison between trigger and daughter tracks:
+         // -------- Filling deviation of matrix elements
+         splitCont[0] = pt; splitCont[5] = fracTrigTPCSharedMap; 
+
+         // ---------------------------
+         // -------- Positive daughter:
+         splitCont[2] = ptrack->Pt();  splitCont[3] = sameSignPosDaug; 
+         splitCont[4] = RdPhiStarMaxPosDaug;   splitCont[6] = fracPosDaugTPCSharedMap; 
+           
+         // ----K0s
+         if( trackAssocME->WhichCandidate() == 3 ){
+           splitCont[1] = massK0s; 
+           for(Int_t ll=0; ll<=8; ll++){
+             splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll; 
+             fK0sPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+           } 
+
+         }
+         // ----Lambda
+         if( trackAssocME->WhichCandidate() == 4 ){
+           splitCont[1] = massL; 
+           for(Int_t ll=0; ll<=8; ll++){
+             splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll; 
+             fLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+           } 
+
+         }
+         // ----AntiLambda
+         if( trackAssocME->WhichCandidate() == 5 ){
+           splitCont[1] = massAL; 
+           for(Int_t ll=0; ll<=8; ll++){
+             splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll; 
+             fAntiLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+           }
+             
+         }
+         // End: Positive daughter
+
+         // ---------------------------
+         // -------- Negative daughter:
+         splitCont[2] = ntrack->Pt(); splitCont[3] = sameSignNegDaug; 
+         splitCont[4] = RdPhiStarMaxNegDaug;   splitCont[6] = fracNegDaugTPCSharedMap; 
+       
+         // ----K0s
+         if( trackAssocME->WhichCandidate() == 3 ){
+           splitCont[1] = massK0s;  
+           for(Int_t ll=0; ll<=8; ll++){
+             splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll; 
+             fK0sNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+           }
+
+         }
+         // ----Lambda
+         if( trackAssocME->WhichCandidate() == 4 ){
+           splitCont[1] = massL; 
+           for(Int_t ll=0; ll<=8; ll++){
+             splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll; 
+             fLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+           }
+             
+         }
+         // ----AntiLambda
+         if( trackAssocME->WhichCandidate() == 5 ){
+           splitCont[1] = massAL; 
+           for(Int_t ll=0; ll<=8; ll++){
+             splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll; 
+             fAntiLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+           }
+
+         }
+         // End: Negative daughter
+   
+       } // end selection in |delta(eta)| < 0.02, |delta(phi)| < 0.02
+
+
+       // ================  FILLING THnSparse:  Classical track-splitting method: d(phi)* and d(eta)*
+       splitCont2[0] = pt;     splitCont2[6] = fracTrigTPCSharedMap; 
+
+       // --------------------------
+       // -------- Positive daughter:
+       splitCont2[2] = ptrack->Pt();  splitCont2[3] = sameSignPosDaug;  splitCont2[4] = posdPhiS;  splitCont2[5] = posdEtaS; 
+       splitCont2[7] = fracPosDaugTPCSharedMap;   splitCont2[8] = fracTrigTPCSharedMap - fracPosDaugTPCSharedMap;
+       splitCont2[9] = devPosDaugTrig[7];  splitCont2[10] = tAssoc->DcaPosToPrimVertex(); splitCont2[11] = sameLabelPosDaug; 
+       // ---- K0s
+       if( trackAssocME->WhichCandidate() == 3 ){
+         splitCont2[1] = massK0s;  
+         // Positive daughter 
+         fK0sPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);    
+               }
+       // ---- Lambda
+       if( trackAssocME->WhichCandidate() == 4 ){
+         splitCont2[1] = massL;  
+         // Positive daughter 
+         fLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);         
+       }
+       // ---- AntiLambda
+       if( trackAssocME->WhichCandidate() == 5 ){
+         splitCont2[1] = massAL;  
+         // Positive daughter
+         fAntiLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);     
+       }
+       
+       // --------------------------
+       // ------- Negative daughter:
+       splitCont2[2] = ntrack->Pt();  splitCont2[3] = sameSignNegDaug;  splitCont2[4] = negdPhiS;  splitCont2[5] = negdEtaS; 
+       splitCont2[7] = fracNegDaugTPCSharedMap;  splitCont2[8] = fracTrigTPCSharedMap - fracNegDaugTPCSharedMap;
+       splitCont2[9] = devNegDaugTrig[7];  splitCont2[10] = tAssoc->DcaNegToPrimVertex();  splitCont2[11] = sameLabelNegDaug;  
+
+       // ---- K0s
+       if( trackAssocME->WhichCandidate() == 3 ){
+         splitCont2[1] = massK0s;  
+         // Negative daughter
+         fK0sNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+       }
+       // ---- Lambda
+       if( trackAssocME->WhichCandidate() == 4 ){
+         splitCont2[1] = massL;          
+         // Negative daughter
+         fLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+       }
+       // ---- AntiLambda
+       if( trackAssocME->WhichCandidate() == 5 ){
+         splitCont2[1] = massAL;         
+         // Negative daughter 
+         fAntiLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+       }
+      
+      } // end selection in |delta(eta)| < 0.1, |delta(phi)| < 0.1
+
+      // ----------------------------------------------------------------
+      // Reject the 'fake' correlation due to the TPC shared clusters
+      // between trigger particle and one of the daughter tracks 
+      //    The rejection will affect more the correlations:
+      //         - Trigger track - Positive track (from Lambda with pt above 3 GeV/c)
+      //         - Trigger track - Negative track (from AntiLambda with pt above 3 GeV/c)
+      /* if( fracTrigTPCSharedMap>0.5 && 
+         ( ( sameSignPosDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracPosDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ||
+         ( sameSignNegDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracNegDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ) )*/
+
+      if( (fracTrigTPCSharedMap > fFracTPCcls) || (fracPosDaugTPCSharedMap > fFracTPCcls) || (fracNegDaugTPCSharedMap > fFracTPCcls) )
+       continue;
+
+      // ----------------------------------------------------------------------------
+        
       // *******************
       //   K0s selection
       // *******************
       if( trackAssocME->WhichCandidate() == 3 ){
-
+              
        massK0s = tAssoc->MassK0Short();
        mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
        if( fCollision.Contains("PbPb2010") )
@@ -4076,15 +4857,16 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
        // ==== Correlations K0s invariant mass peak ==== //
        if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
 
-         if(radio<0.1)
+         if(radio<0.02){
            fK0sSpatialRes->Fill(dPhi,res,lt);
+         }
          if(radio < 0.4){
+           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
            fK0sDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);       
            RecCascade(tTrig,ntrack,ptrack,"K0s");
            RecCascade(tTrig,ptrack,ntrack,"K0s");      
          }
-       
-               
+                       
        }
        // ==== Correlations K0s background ==== //
        if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
@@ -4102,7 +4884,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
          //fK0sdPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
            
          if(radio < 0.4){ // Under the correlation peak
-           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
+           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
            fK0sBckgDecLength->Fill(dlK,ptTrig);
            fK0sBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
            fK0sBckgEtaPhi->Fill(lPhi,lEta);
@@ -4130,14 +4912,15 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
 
        // ==== Correlations Lambda invariant mass peak ==== //
         // +++++++++++ Pt bin & centrality
-        fLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massL);
+       fLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massL);
 
        // ==== Correlations Lambda invariant mass peak ==== //
-       if (TMath::Abs(mL-massL) < 3*sL) {
-               
-         if(radio<0.1)
+       if (TMath::Abs(mL-massL) < 3*sL) {                        
+
+         if(radio<0.02)
            fLambdaSpatialRes->Fill(dPhi,res,lt);
          if(radio < 0.4){
+           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
            fLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
            RecCascade(tTrig,ntrack,ptrack,"Lambda");
            RecCascade(tTrig,ptrack,ntrack,"Lambda");
@@ -4147,7 +4930,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
        // ==== Correlations Lambda background ==== //
        if( TMath::Abs(mL-massL + 6.5*sL) < 1.5*sL ||
            TMath::Abs(mL-massL - 6.5*sL) < 1.5*sL ) {
-           
+
          // Only fills the histograms when it is a triggered event
          if(j==0){
            fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,3);
@@ -4160,7 +4943,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
          //fLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
        
          if(radio < 0.4){ // Under the peak
-           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
+           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,3);
            fLambdaBckgDecLength->Fill(dlL,ptTrig);
            fLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
            fLambdaBckgEtaPhi->Fill(lPhi,lEta);
@@ -4171,7 +4954,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
 
          }// End selection in the correlation peak
                
-       } // End bacground selection
+       } // End background selection
        
       }// End Lambda selection
        // *******************
@@ -4185,10 +4968,9 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
        else if( fCollision.Contains("PbPb2011") ) 
          sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
        
-
        // ==== Correlations Lambda invariant mass peak ==== //
         // +++++++++++ Pt bin & centrality
-        fAntiLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massAL);
+       fAntiLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massAL);
 
        // ==== Correlations AntiLambda invariant mass peak ==== //
        if (TMath::Abs(mL-massAL) < 3*sL) {
@@ -4196,6 +4978,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
          if(radio<0.1)
            fAntiLambdaSpatialRes->Fill(dPhi,res,lt);         
          if(radio < 0.4){
+           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,4);
            fAntiLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
            RecCascade(tTrig,ntrack,ptrack,"AntiLambda");
            RecCascade(tTrig,ptrack,ntrack,"AntiLambda");
@@ -4205,7 +4988,9 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
        // ==== Correlations AntiLambda background ==== //
        if( (TMath::Abs(mL-massAL + 6.5*sL) < 1.5*sL) ||
            (TMath::Abs(mL-massAL - 6.5*sL) < 1.5*sL) ){
-          
+
+         // ----------------------------------------------
+
          // Only fills the histograms when it is a triggered event
          if(j==0){
            fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,5);
@@ -4218,7 +5003,7 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
          //fAntiLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
        
          if(radio < 0.4){ // Under the peak
-           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
+           fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,5);
            fAntiLambdaBckgDecLength->Fill(dlL,ptTrig);
            fAntiLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
            fAntiLambdaBckgEtaPhi->Fill(lPhi,lEta);
@@ -4234,119 +5019,130 @@ void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
       } // End AntiLambda selection
 
     } // End loop over associated particles
-    
+   
+
+    // Filling information of the trigger particle
+    // after the rejection in the cut of shared TPC cls
+    fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
+    fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
+
   } // End loop over trigger particles
-  
   //-------------------------------------------------------------
   // Mixing
   //-------------------------------------------------------------
-  
-  TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
-  Int_t nMixed = evMixList->GetSize(); 
+  /*
+    Double_t phiTrigME=0, etaTrigME=0, phiAssocME=0, etaAssocME=0;
+    Double_t deltaPhi=0, deltaEta=0;
+
+    TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
+    Int_t nMixed = evMixList->GetSize(); 
  
-  if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
+    if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
     
     for(Int_t ii=0; ii<nMixed; ii++){     
       
-      AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
-      Double_t phiTrigME = trackTriggerME->Phi();
-      Double_t etaTrigME = trackTriggerME->Eta();
-           
-      for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
-          
-       AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
-       if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
-       if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
-       if( trackAssocME->WhichCandidate() ==  2 ) continue;
+    AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
+    phiTrigME = trackTriggerME->Phi();
+    etaTrigME = trackTriggerME->Eta();
+      
+    // --- V0 associated particles
+    for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
+       
+    AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
+    if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
+    if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
+    if( trackAssocME->WhichCandidate() ==  2 ) continue;
 
-       AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
-       pt = tAssoc->Pt();
+    AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
+    pt = tAssoc->Pt();
 
-       Bool_t IsSelected = kFALSE;
-       // K0s
-       if( trackAssocME->WhichCandidate() == 3 ){
-         massK0s = tAssoc->MassK0Short();
-         mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
-         if( fCollision.Contains("PbPb2010") )
-           sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
-         else if( fCollision.Contains("PbPb2011") ) 
-           sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
+    Bool_t IsSelected = kFALSE;
+    // K0s
+    if( trackAssocME->WhichCandidate() == 3 ){
+    massK0s = tAssoc->MassK0Short();
+    mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
+    if( fCollision.Contains("PbPb2010") )
+    sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
+    else if( fCollision.Contains("PbPb2011") ) 
+    sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
          
-         if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
-       }
-       // Lambda
-       if( trackAssocME->WhichCandidate() == 4 ){
-         massL = tAssoc->MassLambda();
-         mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();   
-         if( fCollision.Contains("PbPb2010") )
-           sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
-         else if( fCollision.Contains("PbPb2011") ) 
-           sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
-
-         if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
-       }
-       // AntiLambda
-       if( trackAssocME->WhichCandidate() == 5 ){
-         massAL = tAssoc->MassAntiLambda();
-         mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
-         if( fCollision.Contains("PbPb2010") )
-           sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
-         else if( fCollision.Contains("PbPb2011") ) 
-           sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
+    if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
+    }
+    // Lambda
+    if( trackAssocME->WhichCandidate() == 4 ){
+    massL = tAssoc->MassLambda();
+    mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();        
+    if( fCollision.Contains("PbPb2010") )
+    sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
+    else if( fCollision.Contains("PbPb2011") ) 
+    sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
+
+    if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
+    }
+    // AntiLambda
+    if( trackAssocME->WhichCandidate() == 5 ){
+    massAL = tAssoc->MassAntiLambda();
+    mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
+    if( fCollision.Contains("PbPb2010") )
+    sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
+    else if( fCollision.Contains("PbPb2011") ) 
+    sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
          
-         if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
-       }
+    if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
+    }
 
-       if(!IsSelected) continue;
+    if(!IsSelected) continue;
 
-       Double_t phiAssocME = trackAssocME->Phi();
-       Double_t etaAssocME = trackAssocME->Eta();
+    phiAssocME = trackAssocME->Phi();
+    etaAssocME = trackAssocME->Eta();
         
-       Double_t deltaPhi = dPHI(phiTrigME,phiAssocME);
-       Double_t deltaEta = etaTrigME - etaAssocME;
+    deltaPhi = dPHI(phiTrigME,phiAssocME);
+    deltaEta = etaTrigME - etaAssocME;
 
-       Int_t binPtv0 = PtBin( trackAssocME->Pt() );
-       if(binPtv0==-1) continue;
+    Int_t binPtv0 = PtBin( trackAssocME->Pt() );
+    if(binPtv0==-1) continue;
     
-       if( trackAssocME->WhichCandidate() == 3 ) {
-         fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);}
-       else if( trackAssocME->WhichCandidate() == 4 )
-         fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
-       else if( trackAssocME->WhichCandidate() == 5 )
-         fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
+    if( trackAssocME->WhichCandidate() == 3 ) {
+    fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);}
+    else if( trackAssocME->WhichCandidate() == 4 )
+    fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
+    else if( trackAssocME->WhichCandidate() == 5 )
+    fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
                     
-      }
-      
+    } // End loop over V0's
+       
     }
     
-  }
+    }
+  */
   //--------------------------------------------------------
   //Add the current event to the list of events for mixing
   //--------------------------------------------------------  
-  
+  /*
   //Add current  event to buffer and Remove redundant events 
   if(fTriggerParticles->GetEntriesFast()>=0){
     
-    for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
-      AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
-      //cout << trkTrig->Pt() << "          " << ii << endl;
+  for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
+  AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
+  //cout << trkTrig->Pt() << "          " << ii << endl;
     
-      if(evMixList->GetSize() < nMaxEvMix)
-       evMixList->AddFirst(trkTrig);
-      /*
-      if(evMixList->GetSize() >= nMaxEvMix) {
-       AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
-       evMixList->RemoveLast();
-       delete tmp;
-      }
-      */
+  if(evMixList->GetSize() < nMaxEvMix)
+  evMixList->AddFirst(trkTrig);
+  *
+  if(evMixList->GetSize() >= nMaxEvMix) {
+  AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
+  evMixList->RemoveLast();
+  delete tmp;
+  }
+  /
       
-    }// End loop over fTriggerParticles
+  }// End loop over fTriggerParticles
 
   }// End adding trigger particles to buffers
-  
-  }
+  */
+}
 
 //___________________________________________________________________________________________