]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/STRANGENESS/LambdaK0/AliAnalysisTaskExtractPerformanceV0.cxx
Bug fix in acquistion of SPD centrality (CL1).
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0 / AliAnalysisTaskExtractPerformanceV0.cxx
index bfc8a7ca3fb31ce1d8a296f6ab8c640e97c94e0f..970a57567913e547fa775335c2d12da4fd797613 100644 (file)
@@ -101,6 +101,10 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
    fkSwitchINT7  ( kFALSE ),
    fkUseOnTheFly ( kFALSE ),
    fkTakeAllTracks ( kFALSE ),
+   fpArapidityShift ( 0.465 ),
+  fCentralityEstimator("V0M"),
+  fkLightWeight  ( kFALSE ),
+  fkFastOnly     ( "" ),
 //------------------------------------------------
 // Tree Variables 
 
@@ -156,7 +160,12 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
 
   fTreeVariableLeastNbrCrossedRows(0),
   fTreeVariableLeastRatioCrossedRowsOverFindable(0),
+
   fTreeVariableMultiplicity(0),
+  fTreeVariableMultiplicityV0A(0),
+  fTreeVariableMultiplicityZNA(0),
+  fTreeVariableMultiplicityTRK(0),
+  fTreeVariableMultiplicitySPD(0),
   fTreeVariableMultiplicityMC(0),
 
   fTreeVariableV0x(0),
@@ -185,6 +194,9 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
 
   fTreeVariableIsNonInjected(0),
 
+  fTreeVariableNegTrackStatus(0),
+  fTreeVariablePosTrackStatus(0),
+
 //------------------------------------------------
 // HISTOGRAMS
 // --- Filled on an Event-by-event basis
@@ -200,6 +212,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),
@@ -226,9 +266,15 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
    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),
@@ -252,6 +298,14 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
    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),
@@ -272,6 +326,10 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
    fkSwitchINT7  ( kFALSE ),
    fkUseOnTheFly ( kFALSE ),
    fkTakeAllTracks ( kFALSE ),
+   fpArapidityShift ( 0.465 ),
+  fCentralityEstimator("V0M"),
+  fkLightWeight  ( kFALSE ),
+  fkFastOnly     ( "" ),
 //------------------------------------------------
 // Tree Variables 
 
@@ -328,6 +386,10 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
   fTreeVariableLeastNbrCrossedRows(0),
   fTreeVariableLeastRatioCrossedRowsOverFindable(0),
   fTreeVariableMultiplicity(0),
+  fTreeVariableMultiplicityV0A(0),
+  fTreeVariableMultiplicityZNA(0),
+  fTreeVariableMultiplicityTRK(0),
+  fTreeVariableMultiplicitySPD(0),
   fTreeVariableMultiplicityMC(0),
 
   fTreeVariableV0x(0),
@@ -356,6 +418,8 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
 
   fTreeVariableIsNonInjected(0),
 
+  fTreeVariableNegTrackStatus(0),
+  fTreeVariablePosTrackStatus(0),
 
 //------------------------------------------------
 // HISTOGRAMS
@@ -372,6 +436,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),
@@ -398,9 +490,15 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
    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),
@@ -424,6 +522,14 @@ AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const c
    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),
@@ -480,7 +586,7 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
 
 //-----------BASIC-INFO---------------------------
 /* 1*/   fTree->Branch("fTreeVariablePrimaryStatus",&fTreeVariablePrimaryStatus,"fTreeVariablePrimaryStatus/I");       
-/* 1*/   fTree->Branch("fTreeVariablePrimaryStatusMother",&fTreeVariablePrimaryStatusMother,"fTreeVariablePrimaryStatusMother/I");     
+/* 2*/   fTree->Branch("fTreeVariablePrimaryStatusMother",&fTreeVariablePrimaryStatusMother,"fTreeVariablePrimaryStatusMother/I");     
 /* 2*/   fTree->Branch("fTreeVariableChi2V0",&fTreeVariableChi2V0,"Chi2V0/F");
 /* 3*/   fTree->Branch("fTreeVariableDcaV0Daughters",&fTreeVariableDcaV0Daughters,"fTreeVariableDcaV0Daughters/F");
 /* 4*/   fTree->Branch("fTreeVariableDcaPosToPrimVertex",&fTreeVariableDcaPosToPrimVertex,"fTreeVariableDcaPosToPrimVertex/F");
@@ -511,6 +617,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");
@@ -521,14 +631,20 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
 /*34*/   fTree->Branch("fTreeVariableNegEta",&fTreeVariableNegEta,"fTreeVariableNegEta/F");
 /*35*/   fTree->Branch("fTreeVariablePosEta",&fTreeVariablePosEta,"fTreeVariablePosEta/F");
 /*36*/   fTree->Branch("fTreeVariableV0CreationRadius",&fTreeVariableV0CreationRadius,"fTreeVariableV0CreationRadius/F");
+  
+    if ( fkLightWeight == kFALSE ){ // these are debugging branches!
 /*37*/   fTree->Branch("fTreeVariableIndexStatus",&fTreeVariableIndexStatus,"fTreeVariableIndexStatus/I");
 /*38*/   fTree->Branch("fTreeVariableIndexStatusMother",&fTreeVariableIndexStatusMother,"fTreeVariableIndexStatusMother/I");
+    }
 
 /*39*/          fTree->Branch("fTreeVariableRunNumber",&fTreeVariableRunNumber,"fTreeVariableRunNumber/I");
 /*40*/   fTree->Branch("fTreeVariableEventNumber",&fTreeVariableEventNumber,"fTreeVariableEventNumber/l");
 
+    if ( fkLightWeight == kFALSE ){ // these are debugging branches!
 /*34*/   fTree->Branch("fTreeVariableVertexZ",&fTreeVariableVertexZ,"fTreeVariableVertexZ/F");
-
+    }
+      
+    if ( fkLightWeight == kFALSE ){ // these are debugging branches!
 //-----------FOR CTAU DEBUGGING: Full Phase Space + Decay Position Info 
         fTree->Branch("fTreeVariableV0x",&fTreeVariableV0x,"fTreeVariableV0x/F");
         fTree->Branch("fTreeVariableV0y",&fTreeVariableV0y,"fTreeVariableV0y/F");
@@ -555,8 +671,15 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
         fTree->Branch("fTreeVariableMCPVx",&fTreeVariableMCPVx,"fTreeVariableMCPVx/F");
         fTree->Branch("fTreeVariableMCPVy",&fTreeVariableMCPVy,"fTreeVariableMCPVy/F");
         fTree->Branch("fTreeVariableMCPVz",&fTreeVariableMCPVz,"fTreeVariableMCPVz/F");
+    }
 
-        fTree->Branch("fTreeVariableIsNonInjected",&fTreeVariableIsNonInjected,"fTreeVariableIsNonInjected/O"); //O for bOOlean... 
+        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");
+  }
+  
 //------------------------------------------------
 // Particle Identification Setup
 //------------------------------------------------
@@ -649,6 +772,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    
@@ -784,6 +1038,19 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       fListHistV0->Add(f3dHistPrimRawPtVsYVsMultK0Short);
    }
 
+   if(! f3dHistPrimRawPtVsYCMSVsMultLambda) {
+      f3dHistPrimRawPtVsYCMSVsMultLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultLambda", "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(f3dHistPrimRawPtVsYCMSVsMultLambda);
+   }
+   if(! f3dHistPrimRawPtVsYCMSVsMultAntiLambda) {
+      f3dHistPrimRawPtVsYCMSVsMultAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultAntiLambda", "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);
+      fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultAntiLambda);
+   }
+   if(! f3dHistPrimRawPtVsYCMSVsMultK0Short) {
+      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);
+   }
+
 //---> Non-injected particles
 
    if(! f3dHistPrimRawPtVsYVsMultNonInjLambda) {
@@ -882,6 +1149,29 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       fListHistV0->Add(f3dHistGenPtVsYVsMultOmegaPlus);
    }
 
+//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);
+   }
+   if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
+      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
 
@@ -904,6 +1194,30 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
    }
 
+//CASCADES, analysis level, y CMS
+
+//--------------------------------------------------------------------------------------
+//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+
+   if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
+      f3dHistGenSelectedPtVsYCMSVsMultXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultXiMinus", "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(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
+   }
+   if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
+      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);
+   }
+
 
 //----------------------------------
 // Histos at analysis level 
@@ -922,6 +1236,19 @@ void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
       fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultK0Short);
    }
 
+   if(! f3dHistPrimAnalysisPtVsYCMSVsMultLambda) {
+      f3dHistPrimAnalysisPtVsYCMSVsMultLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultLambda", "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(f3dHistPrimAnalysisPtVsYCMSVsMultLambda);
+   }
+   if(! f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda) {
+      f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda", "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);
+      fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda);
+   }
+   if(! f3dHistPrimAnalysisPtVsYCMSVsMultK0Short) {
+      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);
+   }
+
 //----------------------------------
 // Primary Vertex Position Histos
 //----------------------------------
@@ -1054,8 +1381,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);
 
@@ -1064,7 +1395,11 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
    if(fkIsNuclear == kTRUE){ 
       AliCentrality* centrality;
       centrality = lESDevent->GetCentrality();
-      lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0M" ) ) );
+      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);
@@ -1075,11 +1410,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
 //------------------------------------------------
@@ -1132,19 +1476,23 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
          if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){ 
             lPtCurrentPart    = lCurrentParticlePrimary->Pt();
             f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+            f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
          }
          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);
          }
       } 
    }
@@ -1165,15 +1513,15 @@ 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++; 
    }//End of loop on tracks
 //----- End Loop on Stack ------------------------------------------------------------
 
-
+   //Double_t lpArapidityShift = 0.465;
    Bool_t lStackNatural = kTRUE;
 //----- Loop on Lambda, K0Short ----------------------------------------------------------------
    for (Int_t iCurrentLabelStack = 0;  iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++) 
@@ -1228,6 +1576,7 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
 
          if( lPdgcodeCurrentPart == 3122 ){
             f3dHistPrimRawPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+            f3dHistPrimRawPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
             if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
             f3dHistPrimRawPtVsYVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
             f3dHistPrimRawPtVsYVsVertexZLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
@@ -1237,12 +1586,14 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
          }
          if( lPdgcodeCurrentPart == -3122 ){
             f3dHistPrimRawPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+            f3dHistPrimRawPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
             if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
             f3dHistPrimRawPtVsYVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
             f3dHistPrimRawPtVsYVsVertexZAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
          }
          if( lPdgcodeCurrentPart == 310 ){
             f3dHistPrimRawPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+            f3dHistPrimRawPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
             if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
             f3dHistPrimRawPtVsYVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
             f3dHistPrimRawPtVsYVsVertexZK0Short->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
@@ -1287,23 +1638,44 @@ 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 ) { 
-      PostData(1, fListHistV0);
-      PostData(2, fTree);
-      return;
-   }
-
-   f2dHistMultiplicityVsTrueForTrigEvt->Fill ( lMultiplicity , lNumberOfCharged );
-   fHistGenVertexZForTrigEvt->Fill( mcPrimaryVtx.At(2) );
+  
+  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;
+  
+  //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;
+  }
+  //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
 //------------------------------------------------
@@ -1313,6 +1685,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
@@ -1356,6 +1732,10 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
    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)) );
 //------------------------------------------------
@@ -1374,6 +1754,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)) );
 //------------------------------------------------
@@ -1389,7 +1773,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...
@@ -1439,12 +1829,15 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
 
       if( lPdgcodeCurrentPart == 3122 ){
          f3dHistPrimAnalysisPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+         f3dHistPrimAnalysisPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
       }
       if( lPdgcodeCurrentPart == -3122 ){
          f3dHistPrimAnalysisPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+         f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
       }
       if( lPdgcodeCurrentPart == 310 ){
          f3dHistPrimAnalysisPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+         f3dHistPrimAnalysisPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
       }
    }
 
@@ -1471,19 +1864,23 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
          if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){ 
             lPtCurrentPart    = lCurrentParticlePrimary->Pt();
             f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+            f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
          }
          if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){ 
             lPtCurrentPart    = lCurrentParticlePrimary->Pt();
             f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+            f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
          }
          // 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);
          }
       } 
    }
@@ -1579,6 +1976,10 @@ void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
       if( !(pTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;      
       if( !(nTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
 
+      //Get status flags
+      fTreeVariablePosTrackStatus = pTrack->GetStatus();
+      fTreeVariableNegTrackStatus = nTrack->GetStatus();
+    
       if ( ( ( ( pTrack->GetTPCClusterInfo(2,1) ) < 70 ) || ( ( nTrack->GetTPCClusterInfo(2,1) ) < 70 ) )&&(fkTakeAllTracks==kFALSE) ) continue;
        
       //GetKinkIndex condition