]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/STRANGENESS/LambdaK0/AliAnalysisTaskExtractPerformanceV0.cxx
Added trigger skipping (for ::SetCollisionCandidates operation), added some extra...
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0 / AliAnalysisTaskExtractPerformanceV0.cxx
index eccbc15a9e9f50ac3f1a4d2879a1a4d2a4f59a20..c50f197f67bf23fd03dd6f9c72b38c851818c6fc 100644 (file)
@@ -87,7 +87,8 @@ class AliAODv0;
 #include "AliAODcascade.h"
 #include "AliESDUtils.h"
 #include "AliGenEventHeader.h"
-
+#include "AliAnalysisTaskSE.h"
+#include "AliAnalysisUtils.h"
 #include "AliAnalysisTaskExtractPerformanceV0.h"
 
 using std::cout;
@@ -95,15 +96,23 @@ using std::endl;
 
 ClassImp(AliAnalysisTaskExtractPerformanceV0)
 
-AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0() 
-  : AliAnalysisTaskSE(), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0),
+AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
+  : AliAnalysisTaskSE(), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
    fkIsNuclear   ( kFALSE ), 
    fkSwitchINT7  ( kFALSE ),
    fkUseOnTheFly ( kFALSE ),
    fkTakeAllTracks ( kFALSE ),
    fpArapidityShift ( 0.465 ),
   fCentralityEstimator("V0M"),
-  fkLightWeight  ( kFALSE ),  
+  fkLightWeight  ( kFALSE ),
+  fkFastOnly     ( "" ),
+  fkpAVertexSelection( kFALSE ),
+  fkRunV0Vertexer( kFALSE ),
+  fkRejectPileup ( kTRUE ),
+  fkSpecialExecution ( kFALSE),
+  fkSkipTrigger(kFALSE),
+  fkSaveAssociatedOnly (kFALSE),
+  fkDoNotCallTPCdEdx( kFALSE ),
 //------------------------------------------------
 // Tree Variables 
 
@@ -159,7 +168,12 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
 
   fTreeVariableLeastNbrCrossedRows(0),
   fTreeVariableLeastRatioCrossedRowsOverFindable(0),
+
   fTreeVariableMultiplicity(0),
+  fTreeVariableMultiplicityV0A(0),
+  fTreeVariableMultiplicityZNA(0),
+  fTreeVariableMultiplicityTRK(0),
+  fTreeVariableMultiplicitySPD(0),
   fTreeVariableMultiplicityMC(0),
 
   fTreeVariableV0x(0),
@@ -191,6 +205,9 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
   fTreeVariableNegTrackStatus(0),
   fTreeVariablePosTrackStatus(0),
 
+  fTreeVariableNegPhysicalStatus(0),
+  fTreeVariablePosPhysicalStatus(0),
+
 //------------------------------------------------
 // HISTOGRAMS
 // --- Filled on an Event-by-event basis
@@ -206,6 +223,34 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
    fHistMultiplicityNoTPCOnly(0),
    fHistMultiplicityNoTPCOnlyNoPileup(0),
 
+//V0A Centrality
+fHistMultiplicityV0ABeforeTrigSel(0),
+fHistMultiplicityV0AForTrigEvt(0),
+fHistMultiplicityV0A(0),
+fHistMultiplicityV0ANoTPCOnly(0),
+fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
+
+//ZNA Centrality
+fHistMultiplicityZNABeforeTrigSel(0),
+fHistMultiplicityZNAForTrigEvt(0),
+fHistMultiplicityZNA(0),
+fHistMultiplicityZNANoTPCOnly(0),
+fHistMultiplicityZNANoTPCOnlyNoPileup(0),
+
+//TRK Centrality
+fHistMultiplicityTRKBeforeTrigSel(0),
+fHistMultiplicityTRKForTrigEvt(0),
+fHistMultiplicityTRK(0),
+fHistMultiplicityTRKNoTPCOnly(0),
+fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
+
+//SPD Centrality
+fHistMultiplicitySPDBeforeTrigSel(0),
+fHistMultiplicitySPDForTrigEvt(0),
+fHistMultiplicitySPD(0),
+fHistMultiplicitySPDNoTPCOnly(0),
+fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
+
        f2dHistMultiplicityVsTrueBeforeTrigSel(0),
        f2dHistMultiplicityVsTrueForTrigEvt(0),
        f2dHistMultiplicityVsTrue(0),
@@ -229,72 +274,193 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
 // PARTICLE HISTOGRAMS
 // --- Filled on a Particle-by-Particle basis
 //------------------------------------------------
-   f3dHistPrimAnalysisPtVsYVsMultLambda(0),
-   f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
-   f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
-   f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
-   f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
-   f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
-   f3dHistPrimRawPtVsYVsMultLambda(0),
-   f3dHistPrimRawPtVsYVsMultAntiLambda(0),
-   f3dHistPrimRawPtVsYVsMultK0Short(0),
-   f3dHistPrimRawPtVsYCMSVsMultLambda(0),
-   f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
-   f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
-   f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
-   f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
-   f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
-   f3dHistPrimRawPtVsYVsMultMCLambda(0),
-   f3dHistPrimRawPtVsYVsMultMCAntiLambda(0),
-   f3dHistPrimRawPtVsYVsMultMCK0Short(0),
-   f3dHistPrimRawPtVsYVsVertexZLambda(0),
-   f3dHistPrimRawPtVsYVsVertexZAntiLambda(0),
-   f3dHistPrimRawPtVsYVsVertexZK0Short(0),
-   f3dHistPrimCloseToPVPtVsYVsMultLambda(0),
-   f3dHistPrimCloseToPVPtVsYVsMultAntiLambda(0),
-   f3dHistPrimCloseToPVPtVsYVsMultK0Short(0),
-   f3dHistPrimRawPtVsYVsDecayLengthLambda(0),
-   f3dHistPrimRawPtVsYVsDecayLengthAntiLambda(0),
-   f3dHistPrimRawPtVsYVsDecayLengthK0Short(0),
-   f3dHistGenPtVsYVsMultXiMinus(0),
-   f3dHistGenPtVsYVsMultXiPlus(0),
-   f3dHistGenPtVsYVsMultOmegaMinus(0),
-   f3dHistGenPtVsYVsMultOmegaPlus(0),
-   f3dHistGenSelectedPtVsYVsMultXiMinus(0),
-   f3dHistGenSelectedPtVsYVsMultXiPlus(0),
-   f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
-   f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
-   f3dHistGenPtVsYCMSVsMultXiMinus(0),
-   f3dHistGenPtVsYCMSVsMultXiPlus(0),
-   f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
-   f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
-   fHistPVx(0),
-   fHistPVy(0),
-   fHistPVz(0),
-   fHistPVxAnalysis(0),
-   fHistPVyAnalysis(0),
-   fHistPVzAnalysis(0),
-   fHistPVxAnalysisHasHighPtLambda(0),
-   fHistPVyAnalysisHasHighPtLambda(0),
-   fHistPVzAnalysisHasHighPtLambda(0),
-   fHistSwappedV0Counter(0)
+
+//Standard V0M / multiplicity
+  f3dHistPrimAnalysisPtVsYVsMultLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
+
+  //True Multiplicity
+  f3dHistPrimAnalysisPtVsYVsMultMCLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultMCK0Short(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short(0),
+
+//V0A
+  f3dHistPrimAnalysisPtVsYVsMultV0ALambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultV0AK0Short(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short(0),
+
+//ZNA
+  f3dHistPrimAnalysisPtVsYVsMultZNALambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultZNAK0Short(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short(0),
+
+//TRK
+  f3dHistPrimAnalysisPtVsYVsMultTRKLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultTRKK0Short(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short(0),
+
+//SPD
+  f3dHistPrimAnalysisPtVsYVsMultSPDLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYVsMultSPDK0Short(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda(0),
+  f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short(0),
+
+//Standard V0M again
+  f3dHistPrimRawPtVsYVsMultLambda(0),
+  f3dHistPrimRawPtVsYVsMultAntiLambda(0),
+  f3dHistPrimRawPtVsYVsMultK0Short(0),
+  f3dHistPrimRawPtVsYCMSVsMultLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
+
+//V0A again
+  f3dHistPrimRawPtVsYVsMultV0ALambda(0),
+  f3dHistPrimRawPtVsYVsMultV0AAntiLambda(0),
+  f3dHistPrimRawPtVsYVsMultV0AK0Short(0),
+  f3dHistPrimRawPtVsYCMSVsMultV0ALambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultV0AK0Short(0),
+
+//ZNA
+  f3dHistPrimRawPtVsYVsMultZNALambda(0),
+  f3dHistPrimRawPtVsYVsMultZNAAntiLambda(0),
+  f3dHistPrimRawPtVsYVsMultZNAK0Short(0),
+  f3dHistPrimRawPtVsYCMSVsMultZNALambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultZNAK0Short(0),
+
+//TRK
+  f3dHistPrimRawPtVsYVsMultTRKLambda(0),
+  f3dHistPrimRawPtVsYVsMultTRKAntiLambda(0),
+  f3dHistPrimRawPtVsYVsMultTRKK0Short(0),
+  f3dHistPrimRawPtVsYCMSVsMultTRKLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultTRKK0Short(0),
+
+//SPD
+  f3dHistPrimRawPtVsYVsMultSPDLambda(0),
+  f3dHistPrimRawPtVsYVsMultSPDAntiLambda(0),
+  f3dHistPrimRawPtVsYVsMultSPDK0Short(0),
+  f3dHistPrimRawPtVsYCMSVsMultSPDLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda(0),
+  f3dHistPrimRawPtVsYCMSVsMultSPDK0Short(0),
+
+  f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
+  f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
+  f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
+  f3dHistPrimRawPtVsYVsMultMCLambda(0),
+  f3dHistPrimRawPtVsYVsMultMCAntiLambda(0),
+  f3dHistPrimRawPtVsYVsMultMCK0Short(0),
+  f3dHistPrimRawPtVsYVsVertexZLambda(0),
+  f3dHistPrimRawPtVsYVsVertexZAntiLambda(0),
+  f3dHistPrimRawPtVsYVsVertexZK0Short(0),
+  f3dHistPrimCloseToPVPtVsYVsMultLambda(0),
+  f3dHistPrimCloseToPVPtVsYVsMultAntiLambda(0),
+  f3dHistPrimCloseToPVPtVsYVsMultK0Short(0),
+  f3dHistPrimRawPtVsYVsDecayLengthLambda(0),
+  f3dHistPrimRawPtVsYVsDecayLengthAntiLambda(0),
+  f3dHistPrimRawPtVsYVsDecayLengthK0Short(0),
+
+//V0M
+  f3dHistGenPtVsYVsMultXiMinus(0),
+  f3dHistGenPtVsYVsMultXiPlus(0),
+  f3dHistGenSelectedPtVsYVsMultXiMinus(0),
+  f3dHistGenSelectedPtVsYVsMultXiPlus(0),
+  f3dHistGenPtVsYCMSVsMultXiMinus(0),
+  f3dHistGenPtVsYCMSVsMultXiPlus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
+
+//V0A
+  f3dHistGenPtVsYVsMultV0AXiMinus(0),
+  f3dHistGenPtVsYVsMultV0AXiPlus(0),
+  f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
+  f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
+  f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
+  f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
+
+//ZNA
+  f3dHistGenPtVsYVsMultZNAXiMinus(0),
+  f3dHistGenPtVsYVsMultZNAXiPlus(0),
+  f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
+  f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
+  f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
+  f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
+
+//TRK
+  f3dHistGenPtVsYVsMultTRKXiMinus(0),
+  f3dHistGenPtVsYVsMultTRKXiPlus(0),
+  f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
+  f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
+  f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
+  f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
+
+//SPD
+  f3dHistGenPtVsYVsMultSPDXiMinus(0),
+  f3dHistGenPtVsYVsMultSPDXiPlus(0),
+  f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
+  f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
+  f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
+  f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
+  f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
+
+  fHistPVx(0),
+  fHistPVy(0),
+  fHistPVz(0),
+  fHistPVxAnalysis(0),
+  fHistPVyAnalysis(0),
+  fHistPVzAnalysis(0),
+  fHistPVxAnalysisHasHighPtLambda(0),
+  fHistPVyAnalysisHasHighPtLambda(0),
+  fHistPVzAnalysisHasHighPtLambda(0),
+  fHistSwappedV0Counter(0)
 {
   // Dummy Constructor
+  for(Int_t iV0selIdx   = 0; iV0selIdx   < 7; iV0selIdx++   ) { fV0Sels          [iV0selIdx   ] = -1.; }  
 }
 
 AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const char *name) 
-  : AliAnalysisTaskSE(name), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0),
+  : AliAnalysisTaskSE(name), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
    fkIsNuclear   ( kFALSE ), 
    fkSwitchINT7  ( kFALSE ),
    fkUseOnTheFly ( kFALSE ),
    fkTakeAllTracks ( kFALSE ),
    fpArapidityShift ( 0.465 ),
   fCentralityEstimator("V0M"),
-  fkLightWeight  ( kFALSE ),  
+  fkLightWeight  ( kFALSE ),
+  fkFastOnly     ( "" ),
+  fkpAVertexSelection( kFALSE ),
+  fkRunV0Vertexer( kFALSE ),
+  fkRejectPileup ( kTRUE ),
+  fkSpecialExecution ( kFALSE),
+  fkSkipTrigger(kFALSE),
+  fkSaveAssociatedOnly (kFALSE),
+  fkDoNotCallTPCdEdx( kFALSE ),
 //------------------------------------------------
 // Tree Variables 
 
@@ -351,6 +517,10 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
   fTreeVariableLeastNbrCrossedRows(0),
   fTreeVariableLeastRatioCrossedRowsOverFindable(0),
   fTreeVariableMultiplicity(0),
+  fTreeVariableMultiplicityV0A(0),
+  fTreeVariableMultiplicityZNA(0),
+  fTreeVariableMultiplicityTRK(0),
+  fTreeVariableMultiplicitySPD(0),
   fTreeVariableMultiplicityMC(0),
 
   fTreeVariableV0x(0),
@@ -382,6 +552,9 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
   fTreeVariableNegTrackStatus(0),
   fTreeVariablePosTrackStatus(0),
 
+  fTreeVariableNegPhysicalStatus(0),
+  fTreeVariablePosPhysicalStatus(0),
+
 //------------------------------------------------
 // HISTOGRAMS
 // --- Filled on an Event-by-event basis
@@ -397,6 +570,34 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
    fHistMultiplicityNoTPCOnly(0),
    fHistMultiplicityNoTPCOnlyNoPileup(0),
 
+//V0A Centrality
+fHistMultiplicityV0ABeforeTrigSel(0),
+fHistMultiplicityV0AForTrigEvt(0),
+fHistMultiplicityV0A(0),
+fHistMultiplicityV0ANoTPCOnly(0),
+fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
+
+//ZNA Centrality
+fHistMultiplicityZNABeforeTrigSel(0),
+fHistMultiplicityZNAForTrigEvt(0),
+fHistMultiplicityZNA(0),
+fHistMultiplicityZNANoTPCOnly(0),
+fHistMultiplicityZNANoTPCOnlyNoPileup(0),
+
+//TRK Centrality
+fHistMultiplicityTRKBeforeTrigSel(0),
+fHistMultiplicityTRKForTrigEvt(0),
+fHistMultiplicityTRK(0),
+fHistMultiplicityTRKNoTPCOnly(0),
+fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
+
+//SPD Centrality
+fHistMultiplicitySPDBeforeTrigSel(0),
+fHistMultiplicitySPDForTrigEvt(0),
+fHistMultiplicitySPD(0),
+fHistMultiplicitySPDNoTPCOnly(0),
+fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
+
        f2dHistMultiplicityVsTrueBeforeTrigSel(0),
        f2dHistMultiplicityVsTrueForTrigEvt(0),
        f2dHistMultiplicityVsTrue(0),
@@ -420,18 +621,95 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
 // PARTICLE HISTOGRAMS
 // --- Filled on a Particle-by-Particle basis
 //------------------------------------------------
-   f3dHistPrimAnalysisPtVsYVsMultLambda(0),
-   f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
-   f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
-   f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
-   f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
-   f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
-   f3dHistPrimRawPtVsYVsMultLambda(0),
-   f3dHistPrimRawPtVsYVsMultAntiLambda(0),
-   f3dHistPrimRawPtVsYVsMultK0Short(0),
-   f3dHistPrimRawPtVsYCMSVsMultLambda(0),
-   f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
-   f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
+
+//Standard V0M
+f3dHistPrimAnalysisPtVsYVsMultLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
+
+//True Multiplicity
+f3dHistPrimAnalysisPtVsYVsMultMCLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultMCK0Short(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short(0),
+
+//V0A
+f3dHistPrimAnalysisPtVsYVsMultV0ALambda(0),
+f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultV0AK0Short(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short(0),
+
+//ZNA
+f3dHistPrimAnalysisPtVsYVsMultZNALambda(0),
+f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultZNAK0Short(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short(0),
+
+//TRK
+f3dHistPrimAnalysisPtVsYVsMultTRKLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultTRKK0Short(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short(0),
+
+//SPD
+f3dHistPrimAnalysisPtVsYVsMultSPDLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda(0),
+f3dHistPrimAnalysisPtVsYVsMultSPDK0Short(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda(0),
+f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short(0),
+
+//Standard V0M again
+f3dHistPrimRawPtVsYVsMultLambda(0),
+f3dHistPrimRawPtVsYVsMultAntiLambda(0),
+f3dHistPrimRawPtVsYVsMultK0Short(0),
+f3dHistPrimRawPtVsYCMSVsMultLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
+
+//V0A again
+f3dHistPrimRawPtVsYVsMultV0ALambda(0),
+f3dHistPrimRawPtVsYVsMultV0AAntiLambda(0),
+f3dHistPrimRawPtVsYVsMultV0AK0Short(0),
+f3dHistPrimRawPtVsYCMSVsMultV0ALambda(0),
+f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultV0AK0Short(0),
+
+//ZNA
+f3dHistPrimRawPtVsYVsMultZNALambda(0),
+f3dHistPrimRawPtVsYVsMultZNAAntiLambda(0),
+f3dHistPrimRawPtVsYVsMultZNAK0Short(0),
+f3dHistPrimRawPtVsYCMSVsMultZNALambda(0),
+f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultZNAK0Short(0),
+
+//TRK
+f3dHistPrimRawPtVsYVsMultTRKLambda(0),
+f3dHistPrimRawPtVsYVsMultTRKAntiLambda(0),
+f3dHistPrimRawPtVsYVsMultTRKK0Short(0),
+f3dHistPrimRawPtVsYCMSVsMultTRKLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultTRKK0Short(0),
+
+//SPD
+f3dHistPrimRawPtVsYVsMultSPDLambda(0),
+f3dHistPrimRawPtVsYVsMultSPDAntiLambda(0),
+f3dHistPrimRawPtVsYVsMultSPDK0Short(0),
+f3dHistPrimRawPtVsYCMSVsMultSPDLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda(0),
+f3dHistPrimRawPtVsYCMSVsMultSPDK0Short(0),
+
    f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
    f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
    f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
@@ -447,22 +725,57 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
    f3dHistPrimRawPtVsYVsDecayLengthLambda(0),
    f3dHistPrimRawPtVsYVsDecayLengthAntiLambda(0),
    f3dHistPrimRawPtVsYVsDecayLengthK0Short(0),
-   f3dHistGenPtVsYVsMultXiMinus(0),
-   f3dHistGenPtVsYVsMultXiPlus(0),
-   f3dHistGenPtVsYVsMultOmegaMinus(0),
-   f3dHistGenPtVsYVsMultOmegaPlus(0),
-   f3dHistGenSelectedPtVsYVsMultXiMinus(0),
-   f3dHistGenSelectedPtVsYVsMultXiPlus(0),
-   f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
-   f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
-   f3dHistGenPtVsYCMSVsMultXiMinus(0),
-   f3dHistGenPtVsYCMSVsMultXiPlus(0),
-   f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
-   f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
-   f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
+
+//V0M
+f3dHistGenPtVsYVsMultXiMinus(0),
+f3dHistGenPtVsYVsMultXiPlus(0),
+f3dHistGenSelectedPtVsYVsMultXiMinus(0),
+f3dHistGenSelectedPtVsYVsMultXiPlus(0),
+f3dHistGenPtVsYCMSVsMultXiMinus(0),
+f3dHistGenPtVsYCMSVsMultXiPlus(0),
+f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
+f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
+
+//V0A
+f3dHistGenPtVsYVsMultV0AXiMinus(0),
+f3dHistGenPtVsYVsMultV0AXiPlus(0),
+f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
+f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
+f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
+f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
+f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
+f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
+
+//ZNA
+f3dHistGenPtVsYVsMultZNAXiMinus(0),
+f3dHistGenPtVsYVsMultZNAXiPlus(0),
+f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
+f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
+f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
+f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
+f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
+f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
+
+//TRK
+f3dHistGenPtVsYVsMultTRKXiMinus(0),
+f3dHistGenPtVsYVsMultTRKXiPlus(0),
+f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
+f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
+f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
+f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
+f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
+f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
+
+//SPD
+f3dHistGenPtVsYVsMultSPDXiMinus(0),
+f3dHistGenPtVsYVsMultSPDXiPlus(0),
+f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
+f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
+f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
+f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
+f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
+f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
+
    fHistPVx(0),
    fHistPVy(0),
    fHistPVz(0),
@@ -475,9 +788,18 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
    fHistSwappedV0Counter(0)
 {
    // Constructor
-   // Output slot #0 writes into a TList container (Cascade)
-   DefineOutput(1, TList::Class());
-   DefineOutput(2, TTree::Class());
+  // Set Loose cuts or not here...
+  // REALLY LOOSE? Be careful when attempting to run over PbPb if fkRunV0Vertexer is set!
+  fV0Sels[0] =  33.  ;  // max allowed chi2
+  fV0Sels[1] =   0.02;  // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+  fV0Sels[2] =   0.02;  // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+  fV0Sels[3] =   2.0 ;  // max allowed DCA between the daughter tracks       (LHC09a4 : 0.5)
+  fV0Sels[4] =   0.95;  // min allowed cosine of V0's pointing angle         (LHC09a4 : 0.99)
+  fV0Sels[5] =   0.5 ;  // min radius of the fiducial volume                 (LHC09a4 : 0.2)
+  fV0Sels[6] = 200.  ;  // max radius of the fiducial volume                 (LHC09a4 : 100.0)
+  // Output slot #0 writes into a TList container (Cascade)
+  DefineOutput(1, TList::Class());
+  DefineOutput(2, TTree::Class());
 }
 
 
@@ -500,6 +822,11 @@ AliAnalysisTaskExtractPerformanceV0::~AliAnalysisTaskExtractPerformanceV0()
     delete fESDtrackCuts;
     fESDtrackCuts = 0x0; 
   }
+  
+  if (fUtils){
+    delete fUtils;
+    fUtils = 0x0;
+  }
 }
 
 //________________________________________________________________________
@@ -550,6 +877,10 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
 //-----------MULTIPLICITY-INFO--------------------
 /*28*/   fTree->Branch("fTreeVariableMultiplicity",&fTreeVariableMultiplicity,"fTreeVariableMultiplicity/I");
 /*28*/   fTree->Branch("fTreeVariableMultiplicityMC",&fTreeVariableMultiplicityMC,"fTreeVariableMultiplicityMC/I");
+  /*17*/       fTree->Branch("fTreeVariableMultiplicityV0A",&fTreeVariableMultiplicityV0A,"fTreeVariableMultiplicityV0A/I");
+  /*17*/       fTree->Branch("fTreeVariableMultiplicityZNA",&fTreeVariableMultiplicityZNA,"fTreeVariableMultiplicityZNA/I");
+  /*17*/       fTree->Branch("fTreeVariableMultiplicityTRK",&fTreeVariableMultiplicityTRK,"fTreeVariableMultiplicityTRK/I");
+  /*17*/       fTree->Branch("fTreeVariableMultiplicitySPD",&fTreeVariableMultiplicitySPD,"fTreeVariableMultiplicitySPD/I");
 //------------------------------------------------
 /*29*/   fTree->Branch("fTreeVariableDistOverTotMom",&fTreeVariableDistOverTotMom,"fTreeVariableDistOverTotMom/F");
 /*30*/   fTree->Branch("fTreeVariableNSigmasPosProton",&fTreeVariableNSigmasPosProton,"fTreeVariableNSigmasPosProton/F");
@@ -605,23 +936,28 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
         fTree->Branch("fTreeVariableIsNonInjected",&fTreeVariableIsNonInjected,"fTreeVariableIsNonInjected/O"); //O for bOOlean...
   
   if ( fkLightWeight == kFALSE ){ // these are debugging branches!
-        fTree->Branch("fTreeVariableNegTrackStatus",&fTreeVariableNegTrackStatus,"fTreeVariableNegTrackStatus/l");
-        fTree->Branch("fTreeVariablePosTrackStatus",&fTreeVariablePosTrackStatus,"fTreeVariablePosTrackStatus/l");
+    fTree->Branch("fTreeVariableNegTrackStatus",&fTreeVariableNegTrackStatus,"fTreeVariableNegTrackStatus/l");
+    fTree->Branch("fTreeVariablePosTrackStatus",&fTreeVariablePosTrackStatus,"fTreeVariablePosTrackStatus/l");
+    fTree->Branch("fTreeVariableNegPhysicalStatus",&fTreeVariableNegPhysicalStatus,"fTreeVariableNegPhysicalStatus/I");
+    fTree->Branch("fTreeVariablePosPhysicalStatus",&fTreeVariablePosPhysicalStatus,"fTreeVariablePosPhysicalStatus/I");
   }
   
 //------------------------------------------------
 // Particle Identification Setup
 //------------------------------------------------
-
-   AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
-   AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
-   fPIDResponse = inputHandler->GetPIDResponse();
-
-  // Multiplicity 
-
-    if(! fESDtrackCuts ){
-          fESDtrackCuts = new AliESDtrackCuts();
-    }
+  
+  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
+  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
+  fPIDResponse = inputHandler->GetPIDResponse();
+  
+  // Multiplicity
+  
+  if(! fESDtrackCuts ){
+    fESDtrackCuts = new AliESDtrackCuts();
+  }
+  if(! fUtils ){
+    fUtils = new AliAnalysisUtils();
+  }
 
 //------------------------------------------------
 // V0 Multiplicity Histograms
@@ -701,6 +1037,137 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
          200, 0, 200);                 
       fListHistV0->Add(fHistMultiplicityNoTPCOnlyNoPileup);
    }
+  
+  //V0A Centrality (if PbPb / pPb)
+  if(! fHistMultiplicityV0ABeforeTrigSel) {
+    fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
+                                                 "Centrality Distribution: V0A;V0A Centrality;Events",
+                                                 200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityV0ABeforeTrigSel);
+  }
+  if(! fHistMultiplicityV0AForTrigEvt) {
+    fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
+                                              "Centrality Distribution: V0A;V0A Centrality;Events",
+                                              200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityV0AForTrigEvt);
+  }
+  if(! fHistMultiplicityV0A) {
+    fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
+                                    "Centrality Distribution: V0A;V0A Centrality;Events",
+                                    200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityV0A);
+  }
+  if(! fHistMultiplicityV0ANoTPCOnly) {
+    fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
+                                             "Centrality Distribution: V0A;V0A Centrality;Events",
+                                             200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityV0ANoTPCOnly);
+  }
+  if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
+    fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
+                                                     "Centrality Distribution: V0A;V0A Centrality;Events",
+                                                     200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
+  }
+  
+  //ZNA Centrality (if PbPb / pPb)
+  if(! fHistMultiplicityZNABeforeTrigSel) {
+    fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
+                                                 "Centrality Distribution: ZNA;ZNA Centrality;Events",
+                                                 200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityZNABeforeTrigSel);
+  }
+  if(! fHistMultiplicityZNAForTrigEvt) {
+    fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
+                                              "Centrality Distribution: ZNA;ZNA Centrality;Events",
+                                              200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityZNAForTrigEvt);
+  }
+  if(! fHistMultiplicityZNA) {
+    fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
+                                    "Centrality Distribution: ZNA;ZNA Centrality;Events",
+                                    200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityZNA);
+  }
+  if(! fHistMultiplicityZNANoTPCOnly) {
+    fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
+                                             "Centrality Distribution: ZNA;ZNA Centrality;Events",
+                                             200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityZNANoTPCOnly);
+  }
+  if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
+    fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
+                                                     "Centrality Distribution: ZNA;ZNA Centrality;Events",
+                                                     200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
+  }
+  
+  //TRK Centrality (if PbPb / pPb)
+  if(! fHistMultiplicityTRKBeforeTrigSel) {
+    fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
+                                                 "Centrality Distribution: TRK;TRK Centrality;Events",
+                                                 200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityTRKBeforeTrigSel);
+  }
+  if(! fHistMultiplicityTRKForTrigEvt) {
+    fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
+                                              "Centrality Distribution: TRK;TRK Centrality;Events",
+                                              200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityTRKForTrigEvt);
+  }
+  if(! fHistMultiplicityTRK) {
+    fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
+                                    "Centrality Distribution: TRK;TRK Centrality;Events",
+                                    200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityTRK);
+  }
+  if(! fHistMultiplicityTRKNoTPCOnly) {
+    fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
+                                             "Centrality Distribution: TRK;TRK Centrality;Events",
+                                             200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityTRKNoTPCOnly);
+  }
+  if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
+    fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
+                                                     "Centrality Distribution: TRK;TRK Centrality;Events",
+                                                     200, 0, 200);
+    fListHistV0->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
+  }
+  
+  //SPD Centrality (if PbPb / pPb)
+  if(! fHistMultiplicitySPDBeforeTrigSel) {
+    fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
+                                                 "Centrality Distribution: SPD;SPD Centrality;Events",
+                                                 200, 0, 200);
+    fListHistV0->Add(fHistMultiplicitySPDBeforeTrigSel);
+  }
+  if(! fHistMultiplicitySPDForTrigEvt) {
+    fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
+                                              "Centrality Distribution: SPD;SPD Centrality;Events",
+                                              200, 0, 200);
+    fListHistV0->Add(fHistMultiplicitySPDForTrigEvt);
+  }
+  if(! fHistMultiplicitySPD) {
+    fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
+                                    "Centrality Distribution: SPD;SPD Centrality;Events",
+                                    200, 0, 200);
+    fListHistV0->Add(fHistMultiplicitySPD);
+  }
+  if(! fHistMultiplicitySPDNoTPCOnly) {
+    fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
+                                             "Centrality Distribution: SPD;SPD Centrality;Events",
+                                             200, 0, 200);
+    fListHistV0->Add(fHistMultiplicitySPDNoTPCOnly);
+  }
+  if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
+    fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
+                                                     "Centrality Distribution: SPD;SPD Centrality;Events",
+                                                     200, 0, 200);
+    fListHistV0->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
+  }
+  
+
+  
 
   //Raw Data for J/Psi paper Technique
        //TH2F    *f2dHistMultiplicityVsTrueBeforeTrigSel;              //! multiplicity distribution    
@@ -821,7 +1288,7 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
 // Raw Generated (Pre-physics-selection)
 //----------------------------------
 
-//--- 3D Histo (Pt, Y, Multiplicity)  
+//--- 3D Histo (Pt, Y, Multiplicity), V0M Version (default) 
 
    if(! f3dHistPrimRawPtVsYVsMultLambda) {
       f3dHistPrimRawPtVsYVsMultLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
@@ -848,6 +1315,120 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       f3dHistPrimRawPtVsYCMSVsMultK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultK0Short);
    }
+  
+//--- 3D Histo (Pt, Y, Multiplicity), V0A Version
+  
+  if(! f3dHistPrimRawPtVsYVsMultV0ALambda) {
+    f3dHistPrimRawPtVsYVsMultV0ALambda = new TH3F( "f3dHistPrimRawPtVsYVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultV0ALambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultV0AAntiLambda) {
+    f3dHistPrimRawPtVsYVsMultV0AAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultV0AAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultV0AK0Short) {
+    f3dHistPrimRawPtVsYVsMultV0AK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultV0AK0Short);
+  }
+  
+  if(! f3dHistPrimRawPtVsYCMSVsMultV0ALambda) {
+    f3dHistPrimRawPtVsYCMSVsMultV0ALambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultV0ALambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda) {
+    f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultV0AK0Short) {
+    f3dHistPrimRawPtVsYCMSVsMultV0AK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultV0AK0Short);
+  }
+  
+  //--- 3D Histo (Pt, Y, Multiplicity), ZNA Version
+  
+  if(! f3dHistPrimRawPtVsYVsMultZNALambda) {
+    f3dHistPrimRawPtVsYVsMultZNALambda = new TH3F( "f3dHistPrimRawPtVsYVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultZNALambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultZNAAntiLambda) {
+    f3dHistPrimRawPtVsYVsMultZNAAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultZNAAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultZNAK0Short) {
+    f3dHistPrimRawPtVsYVsMultZNAK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultZNAK0Short);
+  }
+  
+  if(! f3dHistPrimRawPtVsYCMSVsMultZNALambda) {
+    f3dHistPrimRawPtVsYCMSVsMultZNALambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultZNALambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda) {
+    f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultZNAK0Short) {
+    f3dHistPrimRawPtVsYCMSVsMultZNAK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultZNAK0Short);
+  }
+  
+  //--- 3D Histo (Pt, Y, Multiplicity), TRK Version
+  
+  if(! f3dHistPrimRawPtVsYVsMultTRKLambda) {
+    f3dHistPrimRawPtVsYVsMultTRKLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultTRKLambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultTRKAntiLambda) {
+    f3dHistPrimRawPtVsYVsMultTRKAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultTRKAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultTRKK0Short) {
+    f3dHistPrimRawPtVsYVsMultTRKK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultTRKK0Short);
+  }
+  
+  if(! f3dHistPrimRawPtVsYCMSVsMultTRKLambda) {
+    f3dHistPrimRawPtVsYCMSVsMultTRKLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultTRKLambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda) {
+    f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultTRKK0Short) {
+    f3dHistPrimRawPtVsYCMSVsMultTRKK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultTRKK0Short);
+  }
+  
+  //--- 3D Histo (Pt, Y, Multiplicity), SPD Version
+  
+  if(! f3dHistPrimRawPtVsYVsMultSPDLambda) {
+    f3dHistPrimRawPtVsYVsMultSPDLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultSPDLambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultSPDAntiLambda) {
+    f3dHistPrimRawPtVsYVsMultSPDAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultSPDAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYVsMultSPDK0Short) {
+    f3dHistPrimRawPtVsYVsMultSPDK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultSPDK0Short);
+  }
+  
+  if(! f3dHistPrimRawPtVsYCMSVsMultSPDLambda) {
+    f3dHistPrimRawPtVsYCMSVsMultSPDLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultSPDLambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda) {
+    f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda);
+  }
+  if(! f3dHistPrimRawPtVsYCMSVsMultSPDK0Short) {
+    f3dHistPrimRawPtVsYCMSVsMultSPDK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultSPDK0Short);
+  }
+  
+  
 
 //---> Non-injected particles
 
@@ -925,6 +1506,8 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       fListHistV0->Add(f3dHistPrimRawPtVsYVsDecayLengthK0Short);
    }
 
+//--------------------------------------------------------------------------------------
+// V0M for Cascades
 //--------------------------------------------------------------------------------------
 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
 
@@ -936,19 +1519,7 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       f3dHistGenPtVsYVsMultXiPlus = new TH3F( "f3dHistGenPtVsYVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistGenPtVsYVsMultXiPlus);
    }
-//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
-
-   if(! f3dHistGenPtVsYVsMultOmegaMinus) {
-      f3dHistGenPtVsYVsMultOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenPtVsYVsMultOmegaMinus);
-   }
-   if(! f3dHistGenPtVsYVsMultOmegaPlus) {
-      f3dHistGenPtVsYVsMultOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenPtVsYVsMultOmegaPlus);
-   }
-
-//CASCADEs, Y CMS 
-
+//CASCADEs, Y CMS
    if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
       f3dHistGenPtVsYCMSVsMultXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
@@ -957,18 +1528,6 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       f3dHistGenPtVsYCMSVsMultXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
    }
-//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
-
-   if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
-      f3dHistGenPtVsYCMSVsMultOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
-   }
-   if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
-      f3dHistGenPtVsYCMSVsMultOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
-   }
-
-
 
 //--------------------------------------------------------------------------------------
 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
@@ -981,19 +1540,8 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       f3dHistGenSelectedPtVsYVsMultXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
    }
-//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
-
-   if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
-      f3dHistGenSelectedPtVsYVsMultOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
-   }
-   if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
-      f3dHistGenSelectedPtVsYVsMultOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
-   }
 
 //CASCADES, analysis level, y CMS
-
 //--------------------------------------------------------------------------------------
 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
 
@@ -1005,22 +1553,208 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       f3dHistGenSelectedPtVsYCMSVsMultXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
    }
-//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
-
-   if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
-      f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
-   }
-   if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
-      f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
-      fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
-   }
+  
+  //--------------------------------------------------------------------------------------
+  // V0A for Cascades
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
+  
+  if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
+    f3dHistGenPtVsYVsMultV0AXiMinus = new TH3F( "f3dHistGenPtVsYVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
+  }
+  if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
+    f3dHistGenPtVsYVsMultV0AXiPlus = new TH3F( "f3dHistGenPtVsYVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
+  }
+  //CASCADEs, Y CMS
+  if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
+    f3dHistGenPtVsYCMSVsMultV0AXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
+  }
+  if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
+    f3dHistGenPtVsYCMSVsMultV0AXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
+  }
+  
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
+    f3dHistGenSelectedPtVsYVsMultV0AXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
+    f3dHistGenSelectedPtVsYVsMultV0AXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
+  }
+  
+  //CASCADES, analysis level, y CMS
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
+    f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
+    f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
+  }
+  
+  //--------------------------------------------------------------------------------------
+  // ZNA for Cascades
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
+  
+  if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
+    f3dHistGenPtVsYVsMultZNAXiMinus = new TH3F( "f3dHistGenPtVsYVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
+  }
+  if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
+    f3dHistGenPtVsYVsMultZNAXiPlus = new TH3F( "f3dHistGenPtVsYVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
+  }
+  //CASCADEs, Y CMS
+  if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
+    f3dHistGenPtVsYCMSVsMultZNAXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
+  }
+  if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
+    f3dHistGenPtVsYCMSVsMultZNAXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
+  }
+  
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
+    f3dHistGenSelectedPtVsYVsMultZNAXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
+    f3dHistGenSelectedPtVsYVsMultZNAXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
+  }
+  
+  //CASCADES, analysis level, y CMS
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
+    f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
+    f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
+  }
+  
+  //--------------------------------------------------------------------------------------
+  // TRK for Cascades
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
+  
+  if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
+    f3dHistGenPtVsYVsMultTRKXiMinus = new TH3F( "f3dHistGenPtVsYVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
+  }
+  if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
+    f3dHistGenPtVsYVsMultTRKXiPlus = new TH3F( "f3dHistGenPtVsYVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
+  }
+  //CASCADEs, Y CMS
+  if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
+    f3dHistGenPtVsYCMSVsMultTRKXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
+  }
+  if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
+    f3dHistGenPtVsYCMSVsMultTRKXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
+  }
+  
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
+    f3dHistGenSelectedPtVsYVsMultTRKXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
+    f3dHistGenSelectedPtVsYVsMultTRKXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
+  }
+  
+  //CASCADES, analysis level, y CMS
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
+    f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
+    f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
+  }
+  
+  
+  //--------------------------------------------------------------------------------------
+  // SPD for Cascades
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
+  
+  if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
+    f3dHistGenPtVsYVsMultSPDXiMinus = new TH3F( "f3dHistGenPtVsYVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
+  }
+  if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
+    f3dHistGenPtVsYVsMultSPDXiPlus = new TH3F( "f3dHistGenPtVsYVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
+  }
+  //CASCADEs, Y CMS
+  if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
+    f3dHistGenPtVsYCMSVsMultSPDXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
+  }
+  if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
+    f3dHistGenPtVsYCMSVsMultSPDXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
+  }
+  
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
+    f3dHistGenSelectedPtVsYVsMultSPDXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
+    f3dHistGenSelectedPtVsYVsMultSPDXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
+  }
+  
+  //CASCADES, analysis level, y CMS
+  //--------------------------------------------------------------------------------------
+  //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+  
+  if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
+    f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
+  }
+  if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
+    f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
+  }
+  
 
 
 //----------------------------------
 // Histos at analysis level 
 //----------------------------------
 
+//The usual V0M business...
+  
    if(! f3dHistPrimAnalysisPtVsYVsMultLambda) {
       f3dHistPrimAnalysisPtVsYVsMultLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultLambda);
@@ -1046,6 +1780,146 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       f3dHistPrimAnalysisPtVsYCMSVsMultK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
       fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultK0Short);
    }
+  
+  //TRUE Multiplicity Business
+  
+  if(! f3dHistPrimAnalysisPtVsYVsMultMCLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultMCLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultMCLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultMCLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultMCK0Short) {
+    f3dHistPrimAnalysisPtVsYVsMultMCK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultMCK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultMCK0Short);
+  }
+  
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short);
+  }
+  
+  //V0A
+  
+  if(! f3dHistPrimAnalysisPtVsYVsMultV0ALambda) {
+    f3dHistPrimAnalysisPtVsYVsMultV0ALambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultV0ALambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultV0AK0Short) {
+    f3dHistPrimAnalysisPtVsYVsMultV0AK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultV0AK0Short);
+  }
+  
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short);
+  }
+  
+  //ZNA
+  
+  if(! f3dHistPrimAnalysisPtVsYVsMultZNALambda) {
+    f3dHistPrimAnalysisPtVsYVsMultZNALambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultZNALambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultZNAK0Short) {
+    f3dHistPrimAnalysisPtVsYVsMultZNAK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultZNAK0Short);
+  }
+  
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short);
+  }
+  
+  //TRK
+  
+  if(! f3dHistPrimAnalysisPtVsYVsMultTRKLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultTRKLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultTRKLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultTRKK0Short) {
+    f3dHistPrimAnalysisPtVsYVsMultTRKK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultTRKK0Short);
+  }
+  
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short);
+  }
+  
+  //SPD
+  
+  if(! f3dHistPrimAnalysisPtVsYVsMultSPDLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultSPDLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultSPDLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda) {
+    f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYVsMultSPDK0Short) {
+    f3dHistPrimAnalysisPtVsYVsMultSPDK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultSPDK0Short);
+  }
+  
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda);
+  }
+  if(! f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short) {
+    f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+    if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short);
+  }
 
 //----------------------------------
 // Primary Vertex Position Histos
@@ -1169,6 +2043,18 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
       cout << "Name of the file with pb :" <<  fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
       return;
    }
+  
+  //------------------------------------------------
+  // Rerun V0 vertexer, if asked for
+  // --- WARNING: Be careful when using in PbPb
+  //------------------------------------------------
+  if( fkRunV0Vertexer ){
+    lESDevent->ResetV0s();
+    AliV0vertexer lV0vtxer;
+    lV0vtxer.SetDefaultCuts(fV0Sels);
+    lV0vtxer.Tracks2V0vertices(lESDevent);
+  }
+  
    TArrayF mcPrimaryVtx;
    AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
    if(!mcHeader) return;
@@ -1179,8 +2065,12 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
 //------------------------------------------------
 
    //REVISED multiplicity estimator after 'multiplicity day' (2011)
-   Int_t lMultiplicity = -100; 
-
+    Int_t lMultiplicity = -100;
+    Int_t lMultiplicityV0A = -100;
+    Int_t lMultiplicityZNA = -100;
+    Int_t lMultiplicityTRK = -100;
+    Int_t lMultiplicitySPD = -100;
+  
    //testing purposes
    if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC,0.5);
 
@@ -1190,6 +2080,10 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
       AliCentrality* centrality;
       centrality = lESDevent->GetCentrality();
       lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile(   fCentralityEstimator.Data() ) ) );
+      lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile(   "V0A" ) ) );
+      lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile(   "ZNA" ) ) );
+      lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile(   "TRK" ) ) );
+      lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile(   "CL1" ) ) );
       if (centrality->GetQuality()>1) {
         PostData(1, fListHistV0);
         PostData(2, fTree);
@@ -1200,11 +2094,20 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
    //Set variable for filling tree afterwards!
    //---> pp case......: GetReferenceMultiplicity
    //---> Pb-Pb case...: Centrality by V0M
-   fTreeVariableMultiplicity = lMultiplicity;
+  fTreeVariableMultiplicity = lMultiplicity;
+  fTreeVariableMultiplicityV0A = lMultiplicityV0A;
+  fTreeVariableMultiplicityZNA = lMultiplicityZNA;
+  fTreeVariableMultiplicityTRK = lMultiplicityTRK;
+  fTreeVariableMultiplicitySPD = lMultiplicitySPD;
 
    fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
-   fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
-        
+  
+  fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
+  fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
+  fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
+  fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
+  fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
+  
 //------------------------------------------------
 // MC Information Acquistion
 //------------------------------------------------
@@ -1258,22 +2161,29 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
             lPtCurrentPart    = lCurrentParticlePrimary->Pt();
             f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
             f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+           
+           f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
+           f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+           f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
+           f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
+           f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
+           f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
+           f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
+           f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
          }
-         if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){ 
+         if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
             lPtCurrentPart    = lCurrentParticlePrimary->Pt();
             f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
             f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
-         }
-         // Omega Histograms
-         if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){ 
-            lPtCurrentPart    = lCurrentParticlePrimary->Pt();
-            f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
-            f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
-         }
-         if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){ 
-            lPtCurrentPart    = lCurrentParticlePrimary->Pt();
-            f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
-            f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+           
+           f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
+           f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+           f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
+           f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
+           f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
+           f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
+           f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
+           f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
          }
       } 
    }
@@ -1294,8 +2204,8 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
       Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
       if(TMath::Abs(lThisCharge)<0.001) continue;
       if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
-      
-      Double_t gpt = particleOne -> Pt();
+     
+      //Double_t gpt = particleOne -> Pt();
       Double_t geta = particleOne -> Eta(); 
 
       if( TMath::Abs(geta) < 0.5) lNumberOfCharged++; 
@@ -1358,6 +2268,16 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
          if( lPdgcodeCurrentPart == 3122 ){
             f3dHistPrimRawPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
             f3dHistPrimRawPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+
+           f3dHistPrimRawPtVsYVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
+           f3dHistPrimRawPtVsYCMSVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
+           f3dHistPrimRawPtVsYVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
+           f3dHistPrimRawPtVsYCMSVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
+           f3dHistPrimRawPtVsYVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
+           f3dHistPrimRawPtVsYCMSVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
+           f3dHistPrimRawPtVsYVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
+           f3dHistPrimRawPtVsYCMSVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
+
             if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
             f3dHistPrimRawPtVsYVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
             f3dHistPrimRawPtVsYVsVertexZLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
@@ -1368,6 +2288,16 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
          if( lPdgcodeCurrentPart == -3122 ){
             f3dHistPrimRawPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
             f3dHistPrimRawPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+           
+           f3dHistPrimRawPtVsYVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
+           f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
+           f3dHistPrimRawPtVsYVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
+           f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
+           f3dHistPrimRawPtVsYVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
+           f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
+           f3dHistPrimRawPtVsYVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
+           f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
+           
             if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
             f3dHistPrimRawPtVsYVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
             f3dHistPrimRawPtVsYVsVertexZAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
@@ -1375,6 +2305,16 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
          if( lPdgcodeCurrentPart == 310 ){
             f3dHistPrimRawPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
             f3dHistPrimRawPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+           
+           f3dHistPrimRawPtVsYVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
+           f3dHistPrimRawPtVsYCMSVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
+           f3dHistPrimRawPtVsYVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
+           f3dHistPrimRawPtVsYCMSVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
+           f3dHistPrimRawPtVsYVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
+           f3dHistPrimRawPtVsYCMSVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
+           f3dHistPrimRawPtVsYVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
+           f3dHistPrimRawPtVsYCMSVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
+           
             if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
             f3dHistPrimRawPtVsYVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
             f3dHistPrimRawPtVsYVsVertexZK0Short->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
@@ -1419,23 +2359,46 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
 //------------------------------------------------
 // Physics Selection
 //------------------------------------------------
-
-   UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
-   Bool_t isSelected = 0;
-   isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
-
-   //pA triggering: CINT7
-   if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
-
-   //Standard Min-Bias Selection
-   if ( ! isSelected ) { 
+  
+  UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
+  Bool_t isSelected = 0;
+  Bool_t isSelectedExtra = kTRUE; //extra sel, default YES
+  isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
+  
+  //pA triggering: CINT7
+  if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
+  
+  if(fkSkipTrigger==kFALSE){
+    //Extra selection applies if with/without SDD is to be dealth with
+    if( fkFastOnly == "kFastOnly"){
+      //If not kFastOnly, isSelectedExtra will be kFALSE; procedure will reject it
+      isSelectedExtra = (maskIsSelected & AliVEvent::kFastOnly) == AliVEvent::kFastOnly;
+    }
+    if( fkFastOnly == "NotkFastOnly"){
+      //If not kFastOnly, isSelectedExtra will be kTRUE; procedure will accept it
+      isSelectedExtra = !( (maskIsSelected & AliVEvent::kFastOnly) == AliVEvent::kFastOnly );
+    }
+    
+    //Standard Min-Bias Selection
+    if ( ! isSelected ) {
       PostData(1, fListHistV0);
       PostData(2, fTree);
       return;
-   }
-
-   f2dHistMultiplicityVsTrueForTrigEvt->Fill ( lMultiplicity , lNumberOfCharged );
-   fHistGenVertexZForTrigEvt->Fill( mcPrimaryVtx.At(2) );
+    }
+    //Check if goes through extra selections
+    //isSelectedExtra will be true in case -> fkFastOnly==""
+    //isSelectedExtra will be true in case -> fkFastOnly=="kFastOnly"    && bit kFastOnly ON
+    //isSelectedExtra will be true in case -> fkFastOnly=="NotkFastOnly" && bit kFastOnly OFF
+    if ( !isSelectedExtra ) {
+      PostData(1, fListHistV0);
+      PostData(2, fTree);
+      return;
+    }
+  }
+  
+  f2dHistMultiplicityVsTrueForTrigEvt->Fill ( lMultiplicity , lNumberOfCharged );
+  fHistGenVertexZForTrigEvt->Fill( mcPrimaryVtx.At(2) );
+  
 //------------------------------------------------
 // After Trigger Selection
 //------------------------------------------------
@@ -1445,6 +2408,10 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
    //Set variable for filling tree afterwards!
    fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
    fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
+  fHistMultiplicityV0AForTrigEvt       ->Fill( lMultiplicityV0A  );
+  fHistMultiplicityZNAForTrigEvt       ->Fill( lMultiplicityZNA  );
+  fHistMultiplicityTRKForTrigEvt       ->Fill( lMultiplicityTRK  );
+  fHistMultiplicitySPDForTrigEvt       ->Fill( lMultiplicitySPD  );
 
 //------------------------------------------------
 // Getting: Primary Vertex + MagField Info
@@ -1472,31 +2439,47 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
 
    f2dHistMultiplicityVsVertexZForTrigEvt->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
 
-//------------------------------------------------
-// Primary Vertex Z position: SKIP
-//------------------------------------------------
-
-   if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0 ) { 
-      AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !"); 
-      PostData(1, fListHistV0);
-      PostData(2, fTree);
-      return; 
-   }
-
-   f2dHistMultiplicityVsVertexZ->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
-
-   lMagneticField = lESDevent->GetMagneticField( );
-   fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
-   fHistMultiplicity->Fill(lMultiplicity);
-   f2dHistMultiplicityVsTrue->Fill ( lMultiplicity , lNumberOfCharged );
-   fHistGenVertexZ->Fill( (mcPrimaryVtx.At(2)) );
-//------------------------------------------------
+  //------------------------------------------------
+  // Primary Vertex Z position: SKIP
+  //------------------------------------------------
+  
+  if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0 && fkpAVertexSelection == kFALSE) {
+    AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
+    PostData(1, fListHistV0);
+    PostData(2, fTree);
+    return;
+  }
+  if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
+    AliWarning("Pb / | This is the first event in the chunk!");
+    PostData(1, fListHistV0);
+    PostData(2, fTree);
+    return;
+  }
+  if(fkpAVertexSelection==kTRUE && !fUtils->IsVertexSelected2013pA(lESDevent)) {
+    AliWarning("Pb / | Vertex not selected by 2013 pA criteria!");
+    PostData(1, fListHistV0);
+    PostData(2, fTree);
+    return;
+  }
+  
+  f2dHistMultiplicityVsVertexZ->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
+  
+  lMagneticField = lESDevent->GetMagneticField( );
+  fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
+  fHistMultiplicity->Fill(lMultiplicity);
+  fHistMultiplicityV0A->Fill(lMultiplicityV0A);
+  fHistMultiplicityZNA->Fill(lMultiplicityZNA);
+  fHistMultiplicityTRK->Fill(lMultiplicityTRK);
+  fHistMultiplicitySPD->Fill(lMultiplicitySPD);
+  f2dHistMultiplicityVsTrue->Fill ( lMultiplicity , lNumberOfCharged );
+  fHistGenVertexZ->Fill( (mcPrimaryVtx.At(2)) );
+  //------------------------------------------------
 // SKIP: Events with well-established PVtx
 //------------------------------------------------
        
    const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
    const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
-   if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() ){
+   if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection == kFALSE){
       AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
       PostData(1, fListHistV0);
       PostData(2, fTree);
@@ -1506,6 +2489,10 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
    f2dHistMultiplicityVsVertexZNoTPCOnly->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
    fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
    fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
+   fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
+   fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
+   fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
+   fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
    f2dHistMultiplicityVsTrueNoTPCOnly->Fill ( lMultiplicity , lNumberOfCharged );
    fHistGenVertexZNoTPCOnly->Fill( (mcPrimaryVtx.At(2)) );
 //------------------------------------------------
@@ -1513,7 +2500,7 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
 //------------------------------------------------
 
    // FIXME : quality selection regarding pile-up rejection 
-   if(lESDevent->IsPileupFromSPD() && !fkIsNuclear ){// minContributors=3, minZdist=0.8, nSigmaZdist=3., nSigmaDiamXY=2., nSigmaDiamZ=5.  -> see http://alisoft.cern.ch/viewvc/trunk/STEER/AliESDEvent.h?root=AliRoot&r1=41914&r2=42199&pathrev=42199
+   if(lESDevent->IsPileupFromSPD() && !fkIsNuclear && fkRejectPileup ){// minContributors=3, minZdist=0.8, nSigmaZdist=3., nSigmaDiamXY=2., nSigmaDiamZ=5.  -> see http://alisoft.cern.ch/viewvc/trunk/STEER/AliESDEvent.h?root=AliRoot&r1=41914&r2=42199&pathrev=42199
       AliWarning("Pb / This is tagged as Pileup from SPD... return !");
       PostData(1, fListHistV0);
       PostData(2, fTree);
@@ -1521,7 +2508,13 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
    }
    f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
    fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
    fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
+   fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
+   fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
+   fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
+   fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
+  
    f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup->Fill ( lMultiplicity , lNumberOfCharged );
    fHistGenVertexZNoTPCOnlyNoPileup->Fill( (mcPrimaryVtx.At(2)) );
    //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
@@ -1570,16 +2563,56 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
       if ( lMCstack->IsPhysicalPrimary(iMc)!=kTRUE ) continue;
 
       if( lPdgcodeCurrentPart == 3122 ){
-         f3dHistPrimAnalysisPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
-         f3dHistPrimAnalysisPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+        //NRaw
+        f3dHistPrimAnalysisPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+        f3dHistPrimAnalysisPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+        //NTrue
+        f3dHistPrimAnalysisPtVsYVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
+        f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lNumberOfCharged);
+        //Other stuff
+        f3dHistPrimAnalysisPtVsYVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
+        f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
+        f3dHistPrimAnalysisPtVsYVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
+        f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
+        f3dHistPrimAnalysisPtVsYVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
+        f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
+        f3dHistPrimAnalysisPtVsYVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
+        f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
       }
       if( lPdgcodeCurrentPart == -3122 ){
-         f3dHistPrimAnalysisPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
-         f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+        //NRaw
+        f3dHistPrimAnalysisPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+        f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+        //NTrue
+        f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
+        f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lNumberOfCharged);
+        //Other stuff
+        f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
+        f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
+        f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
+        f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
+        f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
+        f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
+        f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
+        f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
+        
       }
       if( lPdgcodeCurrentPart == 310 ){
-         f3dHistPrimAnalysisPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
-         f3dHistPrimAnalysisPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+        //NRaw
+        f3dHistPrimAnalysisPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+        f3dHistPrimAnalysisPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+        //NTrue
+        f3dHistPrimAnalysisPtVsYVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
+        f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lNumberOfCharged);
+        //Other Stuff
+        f3dHistPrimAnalysisPtVsYVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
+        f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
+        f3dHistPrimAnalysisPtVsYVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
+        f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
+        f3dHistPrimAnalysisPtVsYVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
+        f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
+        f3dHistPrimAnalysisPtVsYVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
+        f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
       }
    }
 
@@ -1607,24 +2640,29 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
             lPtCurrentPart    = lCurrentParticlePrimary->Pt();
             f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
             f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+           f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
+           f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+           f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
+           f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
+           f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
+           f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
+           f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
+           f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
          }
-         if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){ 
+         if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
             lPtCurrentPart    = lCurrentParticlePrimary->Pt();
             f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
             f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+           f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
+           f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+           f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
+           f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
+           f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
+           f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
+           f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
+           f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
          }
-         // Omega Histograms
-         if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){ 
-            lPtCurrentPart    = lCurrentParticlePrimary->Pt();
-            f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
-            f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
-         }
-         if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){ 
-            lPtCurrentPart    = lCurrentParticlePrimary->Pt();
-            f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
-            f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
-         }
-      } 
+      }
    }
 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
 
@@ -1797,8 +2835,11 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
       fTreeVariablePrimaryStatus = 0; 
       fTreeVariablePrimaryStatusMother = 0; 
       fTreeVariableV0CreationRadius = -1;
-
-      Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrack->GetLabel() );  
+    
+      fTreeVariableNegPhysicalStatus = 0;
+      fTreeVariablePosPhysicalStatus = 0;
+    
+      Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrack->GetLabel() );
       Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrack->GetLabel() );
                
       TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
@@ -1815,7 +2856,15 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
 
       Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ; 
       Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
+    
+      if( lMCstack->IsPhysicalPrimary       (lblNegV0Dghter) ) fTreeVariableNegPhysicalStatus = 1; //Is Primary!
+      if( lMCstack->IsSecondaryFromWeakDecay(lblNegV0Dghter) ) fTreeVariableNegPhysicalStatus = 2; //Weak Decay!
+      if( lMCstack->IsSecondaryFromMaterial (lblNegV0Dghter) ) fTreeVariableNegPhysicalStatus = 3; //Material Int!
 
+      if( lMCstack->IsPhysicalPrimary       (lblPosV0Dghter) ) fTreeVariablePosPhysicalStatus = 1; //Is Primary!
+      if( lMCstack->IsSecondaryFromWeakDecay(lblPosV0Dghter) ) fTreeVariablePosPhysicalStatus = 2; //Weak Decay!
+      if( lMCstack->IsSecondaryFromMaterial (lblPosV0Dghter) ) fTreeVariablePosPhysicalStatus = 3; //Material Int!
+    
       if( lblMotherPosV0Dghter == lblMotherNegV0Dghter && lblMotherPosV0Dghter > -1 ){
          //either label is fine, they're equal at this stage
          TParticle* pThisV0 = lMCstack->Particle( lblMotherPosV0Dghter ); 
@@ -1893,12 +2942,19 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
       fTreeVariableAlphaV0 = lAlphaV0;
       fTreeVariablePtArmV0 = lPtArmV0;
 
-      //Official means of acquiring N-sigmas 
+    if(   fkDoNotCallTPCdEdx == kFALSE ){
+      //Official means of acquiring N-sigmas
       fTreeVariableNSigmasPosProton = fPIDResponse->NumberOfSigmasTPC( pTrack, AliPID::kProton );
       fTreeVariableNSigmasPosPion   = fPIDResponse->NumberOfSigmasTPC( pTrack, AliPID::kPion );
       fTreeVariableNSigmasNegProton = fPIDResponse->NumberOfSigmasTPC( nTrack, AliPID::kProton );
       fTreeVariableNSigmasNegPion   = fPIDResponse->NumberOfSigmasTPC( nTrack, AliPID::kPion );
-
+    }else{
+      fTreeVariableNSigmasPosProton = 0;
+      fTreeVariableNSigmasPosPion   = 0;
+      fTreeVariableNSigmasNegProton = 0;
+      fTreeVariableNSigmasNegPion   = 0;
+    }
+    
 //tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]
       Double_t lDistanceTravelled = TMath::Sqrt(
                                                TMath::Power( tDecayVertexV0[0] - lBestPrimaryVtxPos[0] , 2) +
@@ -1945,14 +3001,22 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
              (fTreeVariableInvMassAntiLambda < lUpperLimitLambda  && fTreeVariableInvMassAntiLambda > lLowerLimitLambda     ) || 
              (fTreeVariableInvMassK0s        < lUpperLimitK0Short && fTreeVariableInvMassK0s        > lLowerLimitK0Short    ) ){
              //Pre-selection in case this is AA...
-             if( fkIsNuclear == kFALSE ) fTree->Fill();
+             if( fkIsNuclear == kFALSE && fkSpecialExecution == kFALSE ) fTree->Fill();
              if( fkIsNuclear == kTRUE){ 
              //If this is a nuclear collision___________________
              // ... pre-filter with daughter eta selection only (not TPC)
-               if ( TMath::Abs(fTreeVariableNegEta)<0.8 && TMath::Abs(fTreeVariablePosEta)<0.8 ) fTree->Fill();
+               if ( TMath::Abs(fTreeVariableNegEta)<0.8 && TMath::Abs(fTreeVariablePosEta)<0.8 && fkSpecialExecution == kFALSE ){
+                 if( !fkSaveAssociatedOnly || (fkSaveAssociatedOnly &&( TMath::Abs(fTreeVariablePID) == 3122 || fTreeVariablePID==310 ) ))fTree->Fill();
+               }
              }//end nuclear_____________________________________
          }
       }
+    //Special Execution: hypertriton exploration
+    if( lOnFlyStatus == 0 && fkSpecialExecution == kTRUE){
+      if ( TMath::Abs(fTreeVariableNegEta)<0.8 && TMath::Abs(fTreeVariablePosEta)<0.8 ){
+        if( !fkSaveAssociatedOnly || (fkSaveAssociatedOnly &&( TMath::Abs(fTreeVariablePID) == 1010010030 ) ) ) fTree->Fill();
+      }
+    }
 
 //------------------------------------------------
 // Fill tree over.