]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/FlavourJetTasks/AliAnalysisTaskSEPicoV0Maker.cxx
Split: removed dirs now in AliPhysics
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / AliAnalysisTaskSEPicoV0Maker.cxx
diff --git a/PWGJE/FlavourJetTasks/AliAnalysisTaskSEPicoV0Maker.cxx b/PWGJE/FlavourJetTasks/AliAnalysisTaskSEPicoV0Maker.cxx
deleted file mode 100644 (file)
index 28ef47e..0000000
+++ /dev/null
@@ -1,1886 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/////////////////////////////////////////////////////////////
-//
-// AliAnalysisTaskSE for RecoDecay object (K0 short, Lambda,
-// D mesons ...) filtering
-//
-// Author: X-M. Zhang, xmzhang@lbl.gov
-/////////////////////////////////////////////////////////////
-
-#include <iostream>
-
-#include <TString.h>
-#include <TH1D.h>
-#include <TH2D.h>
-#include <THnSparse.h>
-#include <TMath.h>
-#include <TClonesArray.h>
-#include <TDatabasePDG.h>
-#include <TParticle.h>
-
-#include "AliAODEvent.h"
-#include "AliESDEvent.h"
-#include "AliMCEvent.h"
-#include "AliStack.h"
-#include "AliVVertex.h"
-#include "AliAODv0.h"
-#include "AliESDv0.h"
-#include "AliAODTrack.h"
-#include "AliESDtrack.h"
-#include "AliStack.h"
-#include "AliMCParticle.h"
-#include "AliAODMCParticle.h"
-#include "AliHeader.h"
-#include "AliGenDPMjetEventHeader.h"
-#include "AliV0vertexer.h"
-#include "AliAnalysisUtils.h"
-#include "AliInputEventHandler.h"
-#include "AliCentrality.h"
-#include "AliPIDResponse.h"
-
-#include "AliPicoHeaderCJ.h"
-#include "AliPicoV0RD.h"
-#include "AliPicoV0MC.h"
-#include "AliAnalysisTaskSEPicoV0Maker.h"
-
-ClassImp(AliAnalysisTaskSEPicoV0Maker)
-//=============================================================================
-
-const Double_t AliAnalysisTaskSEPicoV0Maker::fgkMassPion   = 0.13957;
-const Double_t AliAnalysisTaskSEPicoV0Maker::fgkMassKshort = 0.497614;
-const Double_t AliAnalysisTaskSEPicoV0Maker::fgkMassProton = 0.938272;
-const Double_t AliAnalysisTaskSEPicoV0Maker::fgkMassLambda = 1.11568;
-
-//_____________________________________________________________________________
-AliAnalysisTaskSEPicoV0Maker::AliAnalysisTaskSEPicoV0Maker() :
-AliAnalysisTaskSE(),
-fEventAOD(0),
-fEventESD(0),
-fCentInfo(0),
-fRespoPID(0),
-fAnaUtils(0),
-fEventAcptMask(0),
-fTriggerMask(0),
-fCollisionType(0),
-fCentEst(""),
-fIsAnaInfoMC(kFALSE),
-fIsRefitV0sESD(kFALSE),
-fIsSkipFastOnly(kFALSE),
-fIsDPMjetMC(kFALSE),
-fRapidityShift(0.),
-fCutMinEventVtxContr(0),
-fCutMaxEventVzAbs(0.),
-fCutMinV0Pt(0.),
-fCutMaxV0Pt(0.),
-fCutMinV0Rap(0.),
-fCutMaxV0Rap(0.),
-fCutMinDauPt(0.),
-fCutMinDauEta(0.),
-fCutMaxDauEta(0.),
-fCutMaxV0Chi2(0.),
-fCutMinV0Radius(0.),
-fCutMaxV0Radius(0.),
-fCutMaxDausDCA(0.),
-fCutMinDauDCAtoPV(0.),
-fCutMinDauXrowsTPC(0.),
-fCutMinDauXrowsOverFindableClusTPC(0.),
-fCutMaxKshortSigmaTPC(0.),
-fCutMinKshortCosPA(0.),
-fCutMaxKshortCtau(0.),
-fCutMaxKshortArmFrac(0.),
-fCutMinKshortDeltaM(0.),
-fCutMaxLambdaSigmaTPC(0.),
-fCutMinLambdaCosPA(0.),
-fCutMaxLambdaCtau(0.),
-fCutMaxLambdaArmFrac(0.),
-fCutMinLambdaDeletaM(0.),
-fPicoV0sClArr(0),
-fOutputListEH(0),
-fOutputListMC(0)
-{
-//
-// Default constructor
-//
-
-  for (Int_t i=3; i--;) fPrimaryVtx[i] = 0.;
-}
-
-//_____________________________________________________________________________
-AliAnalysisTaskSEPicoV0Maker::AliAnalysisTaskSEPicoV0Maker(const char *name, Bool_t bIsMC) :
-AliAnalysisTaskSE(name),
-fEventAOD(0),
-fEventESD(0),
-fCentInfo(0),
-fRespoPID(0),
-fAnaUtils(0),
-fEventAcptMask(0),
-fTriggerMask(0),
-fCollisionType(AliPicoHeaderCJ::kPP),
-fCentEst("V0M"),
-fIsAnaInfoMC(bIsMC),
-fIsRefitV0sESD(kFALSE),
-fIsSkipFastOnly(kFALSE),
-fIsDPMjetMC(kFALSE),
-fRapidityShift(0.),
-fCutMinEventVtxContr(2),
-fCutMaxEventVzAbs(10.),
-fCutMinV0Pt(0.),
-fCutMaxV0Pt(100.),
-fCutMinV0Rap(-10.),
-fCutMaxV0Rap(10.),
-fCutMinDauPt(0.),
-fCutMinDauEta(-10.),
-fCutMaxDauEta(10.),
-fCutMaxV0Chi2(33.),
-fCutMinV0Radius(0.3),
-fCutMaxV0Radius(200.),
-fCutMaxDausDCA(1.5),
-fCutMinDauDCAtoPV(0.05),
-fCutMinDauXrowsTPC(70.),
-fCutMinDauXrowsOverFindableClusTPC(0.8),
-fCutMaxKshortSigmaTPC(-1.),
-fCutMinKshortCosPA(0.95),
-fCutMaxKshortCtau(30.),
-fCutMaxKshortArmFrac(-1.),
-fCutMinKshortDeltaM(0.003),
-fCutMaxLambdaSigmaTPC(7.),
-fCutMinLambdaCosPA(0.993),
-fCutMaxLambdaCtau(40.),
-fCutMaxLambdaArmFrac(-1.),
-fCutMinLambdaDeletaM(-1.),
-fPicoV0sClArr(0),
-fOutputListEH(0),
-fOutputListMC(0)
-{
-//
-// Constructor
-//
-
-  for (Int_t i=3; i--;) fPrimaryVtx[i] = 0.;
-
-  DefineOutput(1, TList::Class());
-  if (fIsAnaInfoMC) DefineOutput(2, TList::Class());
-}
-
-//_____________________________________________________________________________
-AliAnalysisTaskSEPicoV0Maker::~AliAnalysisTaskSEPicoV0Maker()
-{
-//
-// Default destructor
-//
-
-
-  if (fEventAOD) { delete fEventAOD; fEventAOD = 0; }
-  if (fEventESD) { delete fEventESD; fEventESD = 0; }
-  if (fCentInfo) { delete fCentInfo; fCentInfo = 0; }
-  if (fRespoPID) { delete fRespoPID; fRespoPID = 0; }
-  if (fAnaUtils) { delete fAnaUtils; fAnaUtils = 0; }
-
-  if (fPicoV0sClArr) { delete fPicoV0sClArr; fPicoV0sClArr = 0; }
-  if (fOutputListEH) { delete fOutputListEH; fOutputListEH = 0; }
-  if (fOutputListMC) { delete fOutputListMC; fOutputListMC = 0; }
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::Init()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::Init
-//
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::UserCreateOutputObjects()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::UserCreateOutputObjects
-//
-
-  InitAnalysis();
-//=============================================================================
-
-  if (fIsAnaInfoMC) {
-    fPicoV0sClArr = new TClonesArray("AliPicoV0MC");
-    fPicoV0sClArr->SetName("PicoV0s");
-  } else {
-    fPicoV0sClArr = new TClonesArray("AliPicoV0RD");
-    fPicoV0sClArr->SetName("PicoV0s");
-  }
-//=============================================================================
-
-  fOutputListEH = new TList();
-  fOutputListEH->SetOwner();
-  CreateHistogramsEH();
-  PostData(1, fOutputListEH);
-
-  if (fIsAnaInfoMC) {
-    fOutputListMC = new TList();
-    fOutputListMC->SetOwner();
-    CreateHistogramsMC();
-    PostData(2, fOutputListMC);
-  }
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::UserExec(Option_t */*opt*/)
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::UserExec
-//
-
-  fPicoV0sClArr->Delete();
-  if (IsEventNotAcpt()) return;
-  if (!(InputEvent()->FindListObject("PicoV0s"))) InputEvent()->AddObject(fPicoV0sClArr);
-//=============================================================================
-
-  FillHistogramsEH();
-  if (IsEventNotINEL()) return;
-  if (fIsAnaInfoMC) FillHistogramsMC();
-//=============================================================================
-
-  if (IsEventNotMBsa()) return;
-
-
-  FillPicoV0s();
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::Terminate(Option_t */*opt*/)
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::Terminate
-//
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::NotifyRun()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::NotifyRun
-//
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::FillPicoV0s()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::FillPicoRecoV0s
-//
-
-  Int_t nV0s = 0;
-  AliAODv0 *pV0AOD = 0;
-  AliESDv0 *pV0ESD = 0;
-  if (fEventAOD) nV0s = fEventAOD->GetNumberOfV0s();
-  if (fEventESD) nV0s = fEventESD->GetNumberOfV0s();
-  if (nV0s<=0) return;
-//=============================================================================
-
-
-  TH2D *hKshortPtInvM = dynamic_cast<TH2D*>(fOutputListEH->FindObject("hKshortPtInvM"));
-  TH2D *hLambdaPtInvM = dynamic_cast<TH2D*>(fOutputListEH->FindObject("hLambdaPtInvM"));
-  TH2D *hAntiLaPtInvM = dynamic_cast<TH2D*>(fOutputListEH->FindObject("hAntiLaPtInvM"));
-//=============================================================================
-
-  AliPicoV0RD *pV0RD = 0;
-  AliPicoV0MC *pV0MC = 0;
-  Int_t nAt = fPicoV0sClArr->GetEntriesFast();
-
-  for (Int_t iV0=0; iV0<nV0s; iV0++) {
-
-    if (fEventAOD) {
-      pV0AOD = fEventAOD->GetV0(iV0); if (!pV0AOD) continue;
-
-      if (fIsAnaInfoMC) {
-        pV0MC = SelectV0CandidateMC(pV0AOD); if (!pV0MC) { pV0AOD = 0; continue; }
-      } else {
-        pV0RD = SelectV0CandidateRD(pV0AOD); if (!pV0RD) { pV0AOD = 0; continue; }
-      }
-    }
-
-    if (fEventESD) {
-      pV0ESD = fEventESD->GetV0(iV0); if (!pV0ESD) continue;
-
-      if (fIsAnaInfoMC) {
-        pV0MC = SelectV0CandidateMC(pV0ESD); if (!pV0MC) { pV0ESD = 0; continue; }
-      } else {
-        pV0RD = SelectV0CandidateRD(pV0ESD); if (!pV0RD) { pV0ESD = 0; continue; }
-      }
-    }
-
-    if (pV0RD) {
-      pV0RD->FillKshortPtInvM(hKshortPtInvM);
-      pV0RD->FillLambdaPtInvM(hLambdaPtInvM);
-      pV0RD->FillAntiLaPtInvM(hAntiLaPtInvM);
-      new ((*fPicoV0sClArr)[nAt++]) AliPicoV0RD(*pV0RD);
-      delete pV0RD; pV0RD=0;
-    }
-
-    if (pV0MC) {
-      pV0MC->FillKshortPtInvM(hKshortPtInvM);
-      pV0MC->FillLambdaPtInvM(hLambdaPtInvM);
-      pV0MC->FillAntiLaPtInvM(hAntiLaPtInvM);
-      new ((*fPicoV0sClArr)[nAt++]) AliPicoV0MC(*pV0MC);
-      delete pV0MC; pV0MC=0;
-    }
-
-    if (pV0AOD) pV0AOD=0;
-    if (pV0ESD) pV0ESD=0;
-  }
-
-  return;
-}
-
-//_____________________________________________________________________________
-AliPicoV0RD* AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateRD(AliAODv0 const *pV0)
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateRD
-//
-
-  if  (pV0->GetOnFlyStatus()) return 0x0;
-  if ((pV0->Chi2V0())>fCutMaxV0Chi2) return 0x0;
-//=============================================================================
-
-  Double_t dV0Pt  = pV0->Pt(); if ((dV0Pt<fCutMinV0Pt) || (dV0Pt>fCutMaxV0Pt)) return 0x0;
-  Double_t dKaRap = pV0->RapK0Short(); if ((dKaRap<fCutMinV0Rap) || (dKaRap>fCutMaxV0Rap)) return 0x0;
-  Double_t dLaRap = pV0->RapLambda();  if ((dLaRap<fCutMinV0Rap) || (dLaRap>fCutMaxV0Rap)) return 0x0;
-//=============================================================================
-
-  Double_t dV0Vtx[3]; pV0->GetXYZ(dV0Vtx);
-  Double_t dV0Radius = TMath::Sqrt(dV0Vtx[0]*dV0Vtx[0] + dV0Vtx[1]*dV0Vtx[1]);
-  if ((dV0Radius<fCutMinV0Radius) || (dV0Radius>fCutMaxV0Radius)) return 0x0;
-
-  Double_t dDausDCA = pV0->DcaV0Daughters(); if (dDausDCA>fCutMaxDausDCA) return 0x0;
-  Double_t dPosDCAtoPV = pV0->DcaPosToPrimVertex(); if (dPosDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-  Double_t dNegDCAtoPV = pV0->DcaNegToPrimVertex(); if (dNegDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-//=============================================================================
-
-  AliAODTrack *pDauPos = (AliAODTrack*)pV0->GetDaughter(0); if (!pDauPos) return 0x0;
-  AliAODTrack *pDauNeg = (AliAODTrack*)pV0->GetDaughter(1); if (!pDauNeg) return 0x0;
-
-  if (!(pDauPos->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-  if (!(pDauNeg->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-
-  if ((pDauPos->GetProdVertex()->GetType())==((Char_t)AliAODVertex::kKink)) return 0x0;
-  if ((pDauNeg->GetProdVertex()->GetType())==((Char_t)AliAODVertex::kKink)) return 0x0;
-
-  Float_t dPosXrowsTPC = pDauPos->GetTPCClusterInfo(2,1);
-  Float_t dNegXrowsTPC = pDauNeg->GetTPCClusterInfo(2,1);
-  Float_t dDauXrowsTPC = dPosXrowsTPC; if (dDauXrowsTPC>dNegXrowsTPC) dDauXrowsTPC = dNegXrowsTPC;
-  if (dDauXrowsTPC<fCutMinDauXrowsTPC) return 0x0;
-
-  UShort_t wPosTPCNClsF = pDauPos->GetTPCNclsF(); if (wPosTPCNClsF<=0) return 0x0;
-  UShort_t wNegTPCNClsF = pDauNeg->GetTPCNclsF(); if (wNegTPCNClsF<=0) return 0x0;
-  Double_t dPosXrowsOverFindableClusTPC = ((Double_t)dPosXrowsTPC) / ((Double_t)wPosTPCNClsF);
-  Double_t dNegXrowsOverFindableClusTPC = ((Double_t)dNegXrowsTPC) / ((Double_t)wNegTPCNClsF);
-
-  Double_t dDauXrowsOverFindableClusTPC = dPosXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC>dNegXrowsOverFindableClusTPC) dDauXrowsOverFindableClusTPC = dNegXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC<fCutMinDauXrowsOverFindableClusTPC) return 0x0;
-//=============================================================================
-
-  Short_t nPosCharge = pDauPos->Charge();
-  Short_t nNegCharge = pDauNeg->Charge();
-  if ((nPosCharge==0) || (nNegCharge==0) || (nPosCharge==nNegCharge)) return 0x0;
-
-  Double_t dPosPxPyPz[3] = { 0., 0., 0. };
-  Double_t dNegPxPyPz[3] = { 0., 0., 0. };
-  if ((nPosCharge<0) && (nNegCharge>0)) {
-    pDauPos = (AliAODTrack*)pV0->GetDaughter(1);
-    pDauNeg = (AliAODTrack*)pV0->GetDaughter(0);
-
-    dPosPxPyPz[0] = pV0->MomNegX(); dPosPxPyPz[1] = pV0->MomNegY(); dPosPxPyPz[2] = pV0->MomNegZ();
-    dNegPxPyPz[0] = pV0->MomPosX(); dNegPxPyPz[1] = pV0->MomPosY(); dNegPxPyPz[2] = pV0->MomPosZ();
-  } else {
-    dPosPxPyPz[0] = pV0->MomPosX(); dPosPxPyPz[1] = pV0->MomPosY(); dPosPxPyPz[2] = pV0->MomPosZ();
-    dNegPxPyPz[0] = pV0->MomNegX(); dNegPxPyPz[1] = pV0->MomNegY(); dNegPxPyPz[2] = pV0->MomNegZ();
-  }
-
-  TVector3 v3Pos(dPosPxPyPz);
-  TVector3 v3Neg(dNegPxPyPz);
-
-  if ((v3Pos.Pt()<fCutMinDauPt) || (v3Neg.Pt()<fCutMinDauPt)) return 0x0;
-  Double_t dPosEta = v3Pos.Eta(); if ((dPosEta<fCutMinDauEta) || (dPosEta>fCutMaxDauEta)) return 0x0;
-  Double_t dNegEta = v3Neg.Eta(); if ((dNegEta<fCutMinDauEta) || (dNegEta>fCutMaxDauEta)) return 0x0;
-//=============================================================================
-
-  Bool_t bIsKshort = kFALSE;
-  Bool_t bIsLambda = kFALSE;
-  Bool_t bIsAntiLa = kFALSE;
-
-  Float_t dPosPionSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauPos,AliPID::kPion);
-  Float_t dNegPionSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauNeg,AliPID::kPion);
-
-  Float_t dPosProtonSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauPos,AliPID::kProton);
-  Float_t dNegProtonSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauNeg,AliPID::kProton);
-
-  if (fCutMaxKshortSigmaTPC>0.) {
-    bIsKshort = ((TMath::Abs(dPosPionSigmaTPC)<fCutMaxKshortSigmaTPC) &&
-                 (TMath::Abs(dNegPionSigmaTPC)<fCutMaxKshortSigmaTPC));
-  } else {
-    bIsKshort = kTRUE;
-  }
-
-  if (fCutMaxLambdaSigmaTPC>0.) {
-    bIsLambda = ((TMath::Abs(dPosProtonSigmaTPC)<fCutMaxLambdaSigmaTPC) &&
-                 (TMath::Abs(dNegPionSigmaTPC)  <fCutMaxLambdaSigmaTPC));
-
-    bIsAntiLa = ((TMath::Abs(dPosPionSigmaTPC)  <fCutMaxLambdaSigmaTPC) &&
-                 (TMath::Abs(dNegProtonSigmaTPC)<fCutMaxLambdaSigmaTPC));
-  } else {
-    bIsLambda = kTRUE;
-    bIsAntiLa = kTRUE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0CosPA = pV0->CosPointingAngle(fPrimaryVtx);
-
-  if (bIsKshort) if (dV0CosPA<fCutMinKshortCosPA) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if (dV0CosPA<fCutMinLambdaCosPA) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0DistToPV = 0.;
-  for (Int_t i=0; i<3; i++) dV0DistToPV +=  ((dV0Vtx[i]-fPrimaryVtx[i]) * (dV0Vtx[i]-fPrimaryVtx[i]));
-  Double_t dV0DistToPVoverP = TMath::Sqrt(dV0DistToPV) / (pV0->P()+1e-10);
-
-  if (bIsKshort) if ((dV0DistToPVoverP*fgkMassKshort)>fCutMaxKshortCtau) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if ((dV0DistToPVoverP*fgkMassLambda)>fCutMaxLambdaCtau) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0ArmFrac = pV0->PtArmV0() / (TMath::Abs(pV0->AlphaV0())+1e-12);
-
-  if (bIsKshort && (fCutMaxKshortArmFrac>0.)) if (dV0ArmFrac>fCutMaxKshortArmFrac) {
-    bIsKshort = kFALSE;
-  }
-
-  if ((bIsLambda || bIsAntiLa) && fCutMaxLambdaArmFrac>0.) if (dV0ArmFrac>fCutMaxLambdaArmFrac) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  TLorentzVector vPosPion; vPosPion.SetVectM(v3Pos, fgkMassPion);
-  TLorentzVector vNegPion; vNegPion.SetVectM(v3Neg, fgkMassPion);
-
-  TLorentzVector vPosProton; vPosProton.SetVectM(v3Pos, fgkMassProton);
-  TLorentzVector vNegProton; vNegProton.SetVectM(v3Neg, fgkMassProton);
-
-  TLorentzVector vKshort = vPosPion   + vNegPion;
-  TLorentzVector vLamvda = vPosProton + vNegPion;
-  TLorentzVector vAntiLa = vNegProton + vPosPion;
-
-  Double_t dKshortInvM = vKshort.M();
-  Double_t dLambdaInvM = vLamvda.M();
-  Double_t dAntiLaInvM = vAntiLa.M();
-
-  if (bIsKshort) {
-    Double_t dLower = 0.430006 - 0.0110029*dV0Pt;
-    Double_t dUpper = 0.563707 + 0.0114979*dV0Pt;
-
-    if ((dKshortInvM<dLower) || (dKshortInvM>dUpper)) bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) {
-    Double_t dLower = 1.09501 - 0.00523272*dV0Pt - 0.075269*TMath::Exp(-3.46339*dV0Pt);
-    Double_t dUpper = 1.13688 + 0.00527838*dV0Pt + 0.084222*TMath::Exp(-3.80595*dV0Pt);
-
-    if (bIsLambda) if ((dLambdaInvM<dLower) || (dLambdaInvM>dUpper)) bIsLambda = kFALSE;
-    if (bIsAntiLa) if ((dAntiLaInvM<dLower) || (dAntiLaInvM>dUpper)) bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  if (bIsKshort && (fCutMinKshortDeltaM>0.)) {
-    if ((TMath::Abs(dLambdaInvM-fgkMassLambda)<fCutMinKshortDeltaM) ||
-        (TMath::Abs(dAntiLaInvM-fgkMassLambda)<fCutMinKshortDeltaM)) bIsKshort = kFALSE;
-  }
-
-  if ((bIsLambda || bIsAntiLa) && (fCutMinLambdaDeletaM>0.)) {
-    if ((TMath::Abs(dKshortInvM-fgkMassKshort)<fCutMinLambdaDeletaM)) {
-      bIsLambda = kFALSE;
-      bIsAntiLa = kFALSE;
-    }
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  UInt_t wMask = 0;
-  if (bIsKshort) wMask |= AliPicoHeaderCJ::kKshort;
-  if (bIsLambda) wMask |= AliPicoHeaderCJ::kLambda;
-  if (bIsAntiLa) wMask |= AliPicoHeaderCJ::kAntiLambda;
-
-  Bool_t bPosInJC = kFALSE;
-  Bool_t bNegInJC = kFALSE;
-
-/*AliAODTrack *pTrkAOD = 0;
-  Int_t idPos = pDauPos->GetID();
-  Int_t idNeg = pDauNeg->GetID();
-  if (fJetContisClArr) for (Int_t i=0; i<fJetContisClArr->GetEntriesFast(); i++) {
-    pTrkAOD = static_cast<AliAODTrack*>(fJetContisClArr->At(i)); if (!pTrkAOD) continue;
-
-    Int_t id = pTrkAOD->GetID();
-    if (idPos==id) bPosInJC = kTRUE;
-    if (idNeg==id) bNegInJC = kTRUE;
-    if (bPosInJC && bNegInJC) { pTrkAOD = 0; break; }
-
-    pTrkAOD = 0;
-  }*/
-
-  AliPicoV0RD *pPicoV0 = new AliPicoV0RD(wMask,
-                                         dV0Radius,
-                                         dV0CosPA,
-                                         dV0DistToPVoverP,
-                                         dDausDCA,
-                                         dPosDCAtoPV,
-                                         dNegDCAtoPV,
-                                         dDauXrowsTPC,
-                                         dDauXrowsOverFindableClusTPC,
-                                         v3Pos.Px(), v3Pos.Py(), v3Pos.Pz(),
-                                         v3Neg.Px(), v3Neg.Py(), v3Neg.Pz(),
-                                         bPosInJC, bNegInJC,
-                                         dPosPionSigmaTPC, dPosProtonSigmaTPC,
-                                         dNegPionSigmaTPC, dNegProtonSigmaTPC);
-
-  return pPicoV0;
-}
-
-//_____________________________________________________________________________
-AliPicoV0RD* AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateRD(AliESDv0 const *pV0)
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateRD
-//
-
-  if (pV0->GetOnFlyStatus()) return 0x0;
-  if (pV0->GetChi2V0()>fCutMaxV0Chi2) return 0x0;
-//=============================================================================
-
-  Double_t dV0Pt = pV0->Pt(); if ((dV0Pt<fCutMinV0Pt) || (dV0Pt>fCutMaxV0Pt)) return 0x0;
-  Double_t dKaRap = pV0->RapK0Short(); if ((dKaRap<fCutMinV0Rap) || (dKaRap>fCutMaxV0Rap)) return 0x0;
-  Double_t dLaRap = pV0->RapLambda();  if ((dLaRap<fCutMinV0Rap) || (dLaRap>fCutMaxV0Rap)) return 0x0;
-//=============================================================================
-
-  Double_t dV0Vtx[3];  pV0->GetXYZ(dV0Vtx[0], dV0Vtx[1], dV0Vtx[2]);
-  Double_t dV0Radius = TMath::Sqrt(dV0Vtx[0]*dV0Vtx[0] + dV0Vtx[1]*dV0Vtx[1]);
-  if ((dV0Radius<fCutMinV0Radius) || (dV0Radius>fCutMaxV0Radius)) return 0x0;
-
-  Double_t dDausDCA = pV0->GetDcaV0Daughters(); if (dDausDCA>fCutMaxDausDCA) return 0x0;
-//=============================================================================
-
-  Int_t nPosIndex = pV0->GetPindex(); if (nPosIndex<0) return 0x0;
-  Int_t nNegIndex = pV0->GetNindex(); if (nNegIndex<0) return 0x0;
-
-  AliESDtrack *pDauPos = fEventESD->GetTrack(nPosIndex); if (!pDauPos) return 0x0;
-  AliESDtrack *pDauNeg = fEventESD->GetTrack(nNegIndex); if (!pDauNeg) return 0x0;
-
-  Double_t dMegField = fEventESD->GetMagneticField();
-  Double_t dPosDCAtoPV = TMath::Abs(pDauPos->GetD(fPrimaryVtx[0],fPrimaryVtx[1],dMegField)); if (dPosDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-  Double_t dNegDCAtoPV = TMath::Abs(pDauNeg->GetD(fPrimaryVtx[0],fPrimaryVtx[1],dMegField)); if (dNegDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-//=============================================================================
-
-  if (!(pDauPos->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-  if (!(pDauNeg->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-  if ((pDauPos->GetKinkIndex(0)>0) || (pDauNeg->GetKinkIndex(0)>0)) return 0x0;
-
-  Float_t dPosXrowsTPC = pDauPos->GetTPCClusterInfo(2,1);
-  Float_t dNegXrowsTPC = pDauNeg->GetTPCClusterInfo(2,1);
-  Float_t dDauXrowsTPC = dPosXrowsTPC; if (dDauXrowsTPC>dNegXrowsTPC) dDauXrowsTPC = dNegXrowsTPC;
-  if (dDauXrowsTPC<fCutMinDauXrowsTPC) return 0x0;
-
-  UShort_t wPosTPCNClsF = pDauPos->GetTPCNclsF(); if (wPosTPCNClsF<=0) return 0x0;
-  UShort_t wNegTPCNClsF = pDauNeg->GetTPCNclsF(); if (wNegTPCNClsF<=0) return 0x0;
-  Double_t dPosXrowsOverFindableClusTPC = ((Double_t)dPosXrowsTPC) / ((Double_t)wPosTPCNClsF);
-  Double_t dNegXrowsOverFindableClusTPC = ((Double_t)dNegXrowsTPC) / ((Double_t)wNegTPCNClsF);
-
-  Double_t dDauXrowsOverFindableClusTPC = dPosXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC>dNegXrowsOverFindableClusTPC) dDauXrowsOverFindableClusTPC = dNegXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC<fCutMinDauXrowsOverFindableClusTPC) return 0x0;
-//=============================================================================
-
-  Short_t nPosCharge = pDauPos->Charge();
-  Short_t nNegCharge = pDauNeg->Charge();
-  if ((nPosCharge==0) || (nNegCharge==0) || (nPosCharge==nNegCharge)) return 0x0;
-
-  Double_t dPosPxPyPz[3] = { 0., 0., 0. };
-  Double_t dNegPxPyPz[3] = { 0., 0., 0. };
-  if ((nPosCharge<0) && (nNegCharge>0)) {
-    pDauPos = fEventESD->GetTrack(nNegIndex);
-    pDauNeg = fEventESD->GetTrack(nPosIndex);
-
-    pV0->GetNPxPyPz(dPosPxPyPz[0], dPosPxPyPz[1], dPosPxPyPz[2]);
-    pV0->GetPPxPyPz(dNegPxPyPz[0], dNegPxPyPz[1], dNegPxPyPz[2]);
-  } else {
-    pV0->GetPPxPyPz(dPosPxPyPz[0], dPosPxPyPz[1], dPosPxPyPz[2]);
-    pV0->GetNPxPyPz(dNegPxPyPz[0], dNegPxPyPz[1], dNegPxPyPz[2]);
-  }
-
-  TVector3 v3Pos(dPosPxPyPz);
-  TVector3 v3Neg(dNegPxPyPz);
-
-  if ((v3Pos.Pt()<fCutMinDauPt) || (v3Neg.Pt()<fCutMinDauPt)) return 0x0;
-  Double_t dPosEta = v3Pos.Eta(); if ((dPosEta<fCutMinDauEta) || (dPosEta>fCutMaxDauEta)) return 0x0;
-  Double_t dNegEta = v3Neg.Eta(); if ((dNegEta<fCutMinDauEta) || (dNegEta>fCutMaxDauEta)) return 0x0;
-//=============================================================================
-
-  Bool_t bIsKshort = kFALSE;
-  Bool_t bIsLambda = kFALSE;
-  Bool_t bIsAntiLa = kFALSE;
-
-  Float_t dPosPionSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauPos,AliPID::kPion);
-  Float_t dNegPionSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauNeg,AliPID::kPion);
-
-  Float_t dPosProtonSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauPos,AliPID::kProton);
-  Float_t dNegProtonSigmaTPC = fRespoPID->NumberOfSigmasTPC(pDauNeg,AliPID::kProton);
-
-  if (fCutMaxKshortSigmaTPC>0.) {
-    bIsKshort = ((TMath::Abs(dPosPionSigmaTPC)<fCutMaxKshortSigmaTPC) &&
-                 (TMath::Abs(dNegPionSigmaTPC)<fCutMaxKshortSigmaTPC));
-  } else {
-    bIsKshort = kTRUE;
-  }
-
-  if (fCutMaxLambdaSigmaTPC>0.) {
-    bIsLambda = ((TMath::Abs(dPosProtonSigmaTPC)<fCutMaxLambdaSigmaTPC) &&
-                 (TMath::Abs(dNegPionSigmaTPC)  <fCutMaxLambdaSigmaTPC));
-
-    bIsAntiLa = ((TMath::Abs(dPosPionSigmaTPC)  <fCutMaxLambdaSigmaTPC) &&
-                 (TMath::Abs(dNegProtonSigmaTPC)<fCutMaxLambdaSigmaTPC));
-  } else {
-    bIsLambda = kTRUE;
-    bIsAntiLa = kTRUE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0CosPA = pV0->GetV0CosineOfPointingAngle(fPrimaryVtx[0], fPrimaryVtx[1], fPrimaryVtx[2]);
-
-  if (bIsKshort) if (dV0CosPA<fCutMinKshortCosPA) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if (dV0CosPA<fCutMinLambdaCosPA) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0DistToPV = 0.;
-  for (Int_t i=0; i<3; i++) dV0DistToPV +=  ((dV0Vtx[i]-fPrimaryVtx[i]) * (dV0Vtx[i]-fPrimaryVtx[i]));
-  Double_t dV0DistToPVoverP = TMath::Sqrt(dV0DistToPV) / (pV0->P()+1e-10);
-
-  if (bIsKshort) if ((dV0DistToPVoverP*fgkMassKshort)>fCutMaxKshortCtau) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if ((dV0DistToPVoverP*fgkMassLambda)>fCutMaxLambdaCtau) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0ArmFrac = pV0->PtArmV0() / (TMath::Abs(pV0->AlphaV0())+1e-12);
-
-  if (bIsKshort && (fCutMaxKshortArmFrac>0.)) if (dV0ArmFrac>fCutMaxKshortArmFrac) {
-    bIsKshort = kFALSE;
-  }
-
-  if ((bIsLambda && bIsAntiLa) && (fCutMaxLambdaArmFrac>0.)) if (dV0ArmFrac>fCutMaxLambdaArmFrac) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  TLorentzVector vPosPion; vPosPion.SetVectM(v3Pos, fgkMassPion);
-  TLorentzVector vNegPion; vNegPion.SetVectM(v3Neg, fgkMassPion);
-
-  TLorentzVector vPosProton; vPosProton.SetVectM(v3Pos, fgkMassProton);
-  TLorentzVector vNegProton; vNegProton.SetVectM(v3Neg, fgkMassProton);
-
-  TLorentzVector vKshort = vPosPion   + vNegPion;
-  TLorentzVector vLamvda = vPosProton + vNegPion;
-  TLorentzVector vAntiLa = vNegProton + vPosPion;
-
-  Double_t dKshortInvM = vKshort.M();
-  Double_t dLambdaInvM = vLamvda.M();
-  Double_t dAntiLaInvM = vAntiLa.M();
-
-  if (bIsKshort) {
-    Double_t dLower = 0.430006 - 0.0110029*dV0Pt;
-    Double_t dUpper = 0.563707 + 0.0114979*dV0Pt;
-
-    if ((dKshortInvM<dLower) || (dKshortInvM>dUpper)) bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) {
-    Double_t dLower = 1.09501 - 0.00523272*dV0Pt - 0.075269*TMath::Exp(-3.46339*dV0Pt);
-    Double_t dUpper = 1.13688 + 0.00527838*dV0Pt + 0.084222*TMath::Exp(-3.80595*dV0Pt);
-
-    if (bIsLambda) if ((dLambdaInvM<dLower) || (dLambdaInvM>dUpper)) bIsLambda = kFALSE;
-    if (bIsAntiLa) if ((dAntiLaInvM<dLower) || (dAntiLaInvM>dUpper)) bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  if (bIsKshort && (fCutMinKshortDeltaM>0.)) {
-    if ((TMath::Abs(dLambdaInvM-fgkMassLambda)<fCutMinKshortDeltaM) ||
-        (TMath::Abs(dAntiLaInvM-fgkMassLambda)<fCutMinKshortDeltaM)) {
-      bIsKshort = kFALSE;
-    }
-  }
-
-  if ((bIsLambda || bIsAntiLa) && (fCutMinLambdaDeletaM>0.)) {
-    if ((TMath::Abs(dKshortInvM-fgkMassKshort)<fCutMinLambdaDeletaM)) {
-      bIsLambda = kFALSE;
-      bIsAntiLa = kFALSE;
-    }
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  UInt_t wMask = 0;
-  if (bIsKshort) wMask |= AliPicoHeaderCJ::kKshort;
-  if (bIsLambda) wMask |= AliPicoHeaderCJ::kLambda;
-  if (bIsAntiLa) wMask |= AliPicoHeaderCJ::kAntiLambda;
-
-  Bool_t bPosInJC = kFALSE;
-  Bool_t bNegInJC = kFALSE;
-  AliPicoV0RD *pPicoV0 = new AliPicoV0RD(wMask,
-                                         dV0Radius,
-                                         dV0CosPA,
-                                         dV0DistToPVoverP,
-                                         dDausDCA,
-                                         dPosDCAtoPV,
-                                         dNegDCAtoPV,
-                                         dDauXrowsTPC,
-                                         dDauXrowsOverFindableClusTPC,
-                                         v3Pos.Px(), v3Pos.Py(), v3Pos.Pz(),
-                                         v3Neg.Px(), v3Neg.Py(), v3Neg.Pz(),
-                                         bPosInJC, bNegInJC,
-                                         dPosPionSigmaTPC, dPosProtonSigmaTPC,
-                                         dNegPionSigmaTPC, dNegProtonSigmaTPC);
-  
-  return pPicoV0;
-}
-
-//_____________________________________________________________________________
-AliPicoV0MC* AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateMC(AliAODv0 const *pV0RD)
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateMC
-//
-
-  if (pV0RD->GetOnFlyStatus()) return 0x0;
-  if ((pV0RD->Chi2V0())>fCutMaxV0Chi2) return 0x0;
-
-  Double_t dV0Pt = pV0RD->Pt(); if ((dV0Pt<fCutMinV0Pt) || (dV0Pt>fCutMaxV0Pt)) return 0x0;
-//=============================================================================
-
-  Double_t dV0Vtx[3]; pV0RD->GetXYZ(dV0Vtx);
-  Double_t dV0Radius = TMath::Sqrt(dV0Vtx[0]*dV0Vtx[0] + dV0Vtx[1]*dV0Vtx[1]);
-  if ((dV0Radius<fCutMinV0Radius) || (dV0Radius>fCutMaxV0Radius)) return 0x0;
-
-  Double_t dDausDCA = pV0RD->DcaV0Daughters(); if (dDausDCA>fCutMaxDausDCA) return 0x0;
-  Double_t dPosDCAtoPV = pV0RD->DcaPosToPrimVertex(); if (dPosDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-  Double_t dNegDCAtoPV = pV0RD->DcaNegToPrimVertex(); if (dNegDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-//=============================================================================
-
-  AliAODTrack *pDauPosRD = (AliAODTrack*)pV0RD->GetDaughter(0); if (!pDauPosRD) return 0x0;
-  AliAODTrack *pDauNegRD = (AliAODTrack*)pV0RD->GetDaughter(1); if (!pDauNegRD) return 0x0;
-
-  if (!(pDauPosRD->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-  if (!(pDauNegRD->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-
-  if ((pDauPosRD->GetProdVertex()->GetType())==((Char_t)AliAODVertex::kKink)) return 0x0;
-  if ((pDauNegRD->GetProdVertex()->GetType())==((Char_t)AliAODVertex::kKink)) return 0x0;
-
-  Float_t dPosXrowsTPC = pDauPosRD->GetTPCClusterInfo(2,1);
-  Float_t dNegXrowsTPC = pDauNegRD->GetTPCClusterInfo(2,1);
-  Float_t dDauXrowsTPC = dPosXrowsTPC; if (dDauXrowsTPC>dNegXrowsTPC) dDauXrowsTPC = dNegXrowsTPC;
-  if (dDauXrowsTPC<fCutMinDauXrowsTPC) return 0x0;
-
-  UShort_t wPosTPCNClsF = pDauPosRD->GetTPCNclsF(); if (wPosTPCNClsF<=0) return 0x0;
-  UShort_t wNegTPCNClsF = pDauNegRD->GetTPCNclsF(); if (wNegTPCNClsF<=0) return 0x0;
-  Double_t dPosXrowsOverFindableClusTPC = ((Double_t)dPosXrowsTPC) / ((Double_t)wPosTPCNClsF);
-  Double_t dNegXrowsOverFindableClusTPC = ((Double_t)dNegXrowsTPC) / ((Double_t)wNegTPCNClsF);
-
-  Double_t dDauXrowsOverFindableClusTPC = dPosXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC>dNegXrowsOverFindableClusTPC) dDauXrowsOverFindableClusTPC = dNegXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC<fCutMinDauXrowsOverFindableClusTPC) return 0x0;
-//=============================================================================
-
-  Short_t nPosCharge = pDauPosRD->Charge();
-  Short_t nNegCharge = pDauNegRD->Charge();
-  if ((nPosCharge==0) || (nNegCharge==0) || (nPosCharge==nNegCharge)) return 0x0;
-
-  Double_t dPosPxPyPz[3] = { 0., 0., 0. };
-  Double_t dNegPxPyPz[3] = { 0., 0., 0. };
-  if ((nPosCharge<0) && (nNegCharge>0)) {
-    pDauPosRD = (AliAODTrack*)pV0RD->GetDaughter(1);
-    pDauNegRD = (AliAODTrack*)pV0RD->GetDaughter(0);
-
-    dPosPxPyPz[0] = pV0RD->MomNegX(); dPosPxPyPz[1] = pV0RD->MomNegY(); dPosPxPyPz[2] = pV0RD->MomNegZ();
-    dNegPxPyPz[0] = pV0RD->MomPosX(); dNegPxPyPz[1] = pV0RD->MomPosY(); dNegPxPyPz[2] = pV0RD->MomPosZ();
-  } else {
-    dPosPxPyPz[0] = pV0RD->MomPosX(); dPosPxPyPz[1] = pV0RD->MomPosY(); dPosPxPyPz[2] = pV0RD->MomPosZ();
-    dNegPxPyPz[0] = pV0RD->MomNegX(); dNegPxPyPz[1] = pV0RD->MomNegY(); dNegPxPyPz[2] = pV0RD->MomNegZ();
-  }
-
-  TVector3 v3Pos(dPosPxPyPz);
-  TVector3 v3Neg(dNegPxPyPz);
-
-  if ((v3Pos.Pt()<fCutMinDauPt) || (v3Neg.Pt()<fCutMinDauPt)) return 0x0;
-  Double_t dPosEta = v3Pos.Eta(); if ((dPosEta<fCutMinDauEta) || (dPosEta>fCutMaxDauEta)) return 0x0;
-  Double_t dNegEta = v3Neg.Eta(); if ((dNegEta<fCutMinDauEta) || (dNegEta>fCutMaxDauEta)) return 0x0;
-//=============================================================================
-
-  Int_t inp = TMath::Abs(pDauPosRD->GetLabel()); if (inp<0) return 0x0;
-  Int_t inn = TMath::Abs(pDauNegRD->GetLabel()); if (inn<0) return 0x0;
-  AliAODMCParticle *pDauPosMC = (AliAODMCParticle*)MCEvent()->GetTrack(inp); if (!pDauPosMC) return 0x0;
-  AliAODMCParticle *pDauNegMC = (AliAODMCParticle*)MCEvent()->GetTrack(inn); if (!pDauNegMC) return 0x0;
-
-  Int_t imp = pDauPosMC->GetMother(); if (imp<0) return 0x0;
-  Int_t imn = pDauNegMC->GetMother(); if (imn<0) return 0x0;
-  if (imp != imn) return 0x0;
-
-  AliAODMCParticle *pV0MC = (AliAODMCParticle*)MCEvent()->GetTrack(imp); if (!pV0MC) return 0x0;
-  if (((pV0MC->Y())<fCutMinV0Rap) || ((pV0MC->Y())>fCutMaxV0Rap)) return 0x0;
-
-  Int_t idvMC = pV0MC->GetPdgCode();
-  Int_t idp = pDauPosMC->GetPdgCode();
-  Int_t idn = pDauNegMC->GetPdgCode();
-  Bool_t bIsKshort = ((idp==211)  && (idn==-211)  && (idvMC== 310));
-  Bool_t bIsLambda = ((idp==2212) && (idn==-211)  && (idvMC== 3122));
-  Bool_t bIsAntiLa = ((idp==211)  && (idn==-2212) && (idvMC==-3122));
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  UInt_t wsvMC = 0;
-  if (pV0MC->IsPrimary())                wsvMC |= AliPicoHeaderCJ::kPrimary;
-  if (pV0MC->IsPhysicalPrimary())        wsvMC |= AliPicoHeaderCJ::kPhysicalPrimary;
-  if (pV0MC->IsSecondaryFromWeakDecay()) wsvMC |= AliPicoHeaderCJ::kSecondaryFromWeakDecay;
-  if (pV0MC->IsSecondaryFromMaterial())  wsvMC |= AliPicoHeaderCJ::kSecondaryFromMaterial;
-
-  Int_t  idmMC = 0;
-  UInt_t wsmMC = 0;
-  Double_t dMotherPt  = 0.;
-  Double_t dMotherEta = 0.;
-  Double_t dMotherRap = 0.;
-  if (bIsLambda || bIsAntiLa) {
-    Int_t imv = pV0MC->GetMother(); if (imv>=0) {
-      AliAODMCParticle *pMother = (AliAODMCParticle*)MCEvent()->GetTrack(imv);
-
-      if (pMother) {
-        idmMC = pMother->GetPdgCode();
-        if ((bIsLambda && ((idmMC== 3312) || (idmMC== 3322))) ||
-            (bIsAntiLa && ((idmMC==-3312) || (idmMC==-3322)))) {
-          dMotherPt  = pMother->Pt();
-          dMotherEta = pMother->Eta();
-          dMotherRap = pMother->Y();
-
-          if (pMother->IsPrimary())                wsmMC |= AliPicoHeaderCJ::kPrimary;
-          if (pMother->IsPhysicalPrimary())        wsmMC |= AliPicoHeaderCJ::kPhysicalPrimary;
-          if (pMother->IsSecondaryFromWeakDecay()) wsmMC |= AliPicoHeaderCJ::kSecondaryFromWeakDecay;
-          if (pMother->IsSecondaryFromMaterial())  wsmMC |= AliPicoHeaderCJ::kSecondaryFromMaterial;
-        }
-      }
-    }
-  }
-//=============================================================================
-
-  Double_t dV0CosPA = pV0RD->CosPointingAngle(fPrimaryVtx);
-
-  if (bIsKshort) if (dV0CosPA<fCutMinKshortCosPA) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if (dV0CosPA<fCutMinLambdaCosPA) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0DistToPV = 0.;
-  for (Int_t i=0; i<3; i++) dV0DistToPV +=  ((dV0Vtx[i]-fPrimaryVtx[i]) * (dV0Vtx[i]-fPrimaryVtx[i]));
-  Double_t dV0DistToPVoverP = TMath::Sqrt(dV0DistToPV) / (pV0RD->P()+1e-10);
-
-  if (bIsKshort) if ((dV0DistToPVoverP*fgkMassKshort)>fCutMaxKshortCtau) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if ((dV0DistToPVoverP*fgkMassLambda)>fCutMaxLambdaCtau) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0ArmFrac = pV0RD->PtArmV0() / (TMath::Abs(pV0RD->AlphaV0())+1e-12);
-
-  if (bIsKshort && (fCutMaxKshortArmFrac>0.)) if (dV0ArmFrac>fCutMaxKshortArmFrac) {
-    bIsKshort = kFALSE;
-  }
-
-  if ((bIsLambda || bIsAntiLa) && fCutMaxLambdaArmFrac>0.) if (dV0ArmFrac>fCutMaxLambdaArmFrac) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Int_t wMask = 0;
-  if (bIsKshort) {
-    TLorentzVector vPosPion; vPosPion.SetVectM(v3Pos, fgkMassPion);
-    TLorentzVector vNegPion; vNegPion.SetVectM(v3Neg, fgkMassPion);
-    TLorentzVector vKshort = vPosPion + vNegPion;
-
-    Double_t dKshortInvM = vKshort.M();
-    Double_t dLower = 0.430006 - 0.0110029*dV0Pt;
-    Double_t dUpper = 0.563707 + 0.0114979*dV0Pt;
-    if ((dKshortInvM<dLower) || (dKshortInvM>dUpper)) return 0x0;
-
-    if (fCutMinKshortDeltaM>0.) {
-      TLorentzVector vPosProton; vPosProton.SetVectM(v3Pos, fgkMassProton);
-      TLorentzVector vNegProton; vNegProton.SetVectM(v3Neg, fgkMassProton);
-
-      TLorentzVector vLamvda = vPosProton + vNegPion;
-      TLorentzVector vAntiLa = vNegProton + vPosPion;
-
-      Double_t dLambdaInvM = vLamvda.M();
-      Double_t dAntiLaInvM = vAntiLa.M();
-      if ((TMath::Abs(dLambdaInvM-fgkMassLambda)<fCutMinKshortDeltaM) ||
-          (TMath::Abs(dAntiLaInvM-fgkMassLambda)<fCutMinKshortDeltaM)) return 0x0;
-    }
-
-    wMask = AliPicoHeaderCJ::kKshort;
-  }
-
-  if (bIsLambda) {
-    TLorentzVector vPosProton; vPosProton.SetVectM(v3Pos, fgkMassProton);
-    TLorentzVector vNegPion;   vNegPion.SetVectM(v3Neg, fgkMassPion);
-    TLorentzVector vLamvda = vPosProton + vNegPion;
-
-    Double_t dLambdaInvM = vLamvda.M();
-    Double_t dLower = 1.09501 - 0.00523272*dV0Pt - 0.075269*TMath::Exp(-3.46339*dV0Pt);
-    Double_t dUpper = 1.13688 + 0.00527838*dV0Pt + 0.084222*TMath::Exp(-3.80595*dV0Pt);
-    if ((dLambdaInvM<dLower) || (dLambdaInvM>dUpper)) return 0x0;
-
-    if (fCutMinLambdaDeletaM>0.) {
-      TLorentzVector vPosPion; vPosPion.SetVectM(v3Pos, fgkMassPion);
-      TLorentzVector vKshort = vPosPion + vNegPion;
-
-      Double_t dKshortInvM = vKshort.M();
-      if ((TMath::Abs(dKshortInvM-fgkMassKshort)<fCutMinLambdaDeletaM)) return 0x0;
-    }
-
-    wMask = AliPicoHeaderCJ::kLambda;
-  }
-
-  if (bIsAntiLa) {
-    TLorentzVector vNegProton; vNegProton.SetVectM(v3Neg, fgkMassProton);
-    TLorentzVector vPosPion;   vPosPion.SetVectM(v3Pos, fgkMassPion);
-    TLorentzVector vAntiLa = vNegProton + vPosPion;
-
-    Double_t dAntiLaInvM = vAntiLa.M();
-    Double_t dLower = 1.09501 - 0.00523272*dV0Pt - 0.075269*TMath::Exp(-3.46339*dV0Pt);
-    Double_t dUpper = 1.13688 + 0.00527838*dV0Pt + 0.084222*TMath::Exp(-3.80595*dV0Pt);
-    if ((dAntiLaInvM<dLower) || (dAntiLaInvM>dUpper)) return 0x0;
-
-    if (fCutMinLambdaDeletaM>0.) {
-      TLorentzVector vNegPion; vNegPion.SetVectM(v3Neg, fgkMassPion);
-      TLorentzVector vKshort = vPosPion + vNegPion;
-
-      Double_t dKshortInvM = vKshort.M();
-      if ((TMath::Abs(dKshortInvM-fgkMassKshort)<fCutMinLambdaDeletaM)) return 0x0;
-    }
-
-    wMask = AliPicoHeaderCJ::kAntiLambda;
-  }
-//=============================================================================
-
-  Bool_t bPosInJC = kFALSE;
-  Bool_t bNegInJC = kFALSE;
-  AliPicoV0MC *pPicoV0 = new AliPicoV0MC(wMask,
-                                         dV0Radius,
-                                         dV0CosPA,
-                                         dV0DistToPVoverP,
-                                         dDausDCA,
-                                         dPosDCAtoPV,
-                                         dNegDCAtoPV,
-                                         dDauXrowsTPC,
-                                         dDauXrowsOverFindableClusTPC,
-                                         v3Pos.Px(), v3Pos.Py(), v3Pos.Pz(),
-                                         v3Neg.Px(), v3Neg.Py(), v3Neg.Pz(),
-                                         bPosInJC, bNegInJC,
-                                         idvMC, wsvMC, pV0MC->Px(), pV0MC->Py(), pV0MC->Pz(), pV0MC->E(),
-                                         idmMC, wsmMC, dMotherPt, dMotherEta, dMotherRap);
-
-
-  return pPicoV0;
-}
-
-//_____________________________________________________________________________
-AliPicoV0MC* AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateMC(AliESDv0 const *pV0RD)
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::SelectV0CandidateMC
-//
-
-  AliStack *pStack = MCEvent()->Stack(); if (!pStack) return 0x0;
-  Int_t nPrimary = pStack->GetNprimary();
-//=============================================================================
-
-  if (pV0RD->GetOnFlyStatus()) return 0x0;
-  if (pV0RD->GetChi2V0()>fCutMaxV0Chi2) return 0x0;
-
-  Double_t dV0Pt = pV0RD->Pt(); if ((dV0Pt<fCutMinV0Pt) || (dV0Pt>fCutMaxV0Pt)) return 0x0;
-//=============================================================================
-  
-  Double_t dV0Vtx[3];  pV0RD->GetXYZ(dV0Vtx[0], dV0Vtx[1], dV0Vtx[2]);
-  Double_t dV0Radius = TMath::Sqrt(dV0Vtx[0]*dV0Vtx[0] + dV0Vtx[1]*dV0Vtx[1]);
-  if ((dV0Radius<fCutMinV0Radius) || (dV0Radius>fCutMaxV0Radius)) return 0x0; 
-
-  Double_t dDausDCA = pV0RD->GetDcaV0Daughters(); if (dDausDCA>fCutMaxDausDCA) return 0x0;
-//=============================================================================
-
-  Int_t nPosIndex = TMath::Abs(pV0RD->GetPindex()); if (nPosIndex<0) return 0x0;
-  Int_t nNegIndex = TMath::Abs(pV0RD->GetNindex()); if (nNegIndex<0) return 0x0;
-
-  AliESDtrack *pDauPosRD = fEventESD->GetTrack(nPosIndex); if (!pDauPosRD) return 0x0;
-  AliESDtrack *pDauNegRD = fEventESD->GetTrack(nNegIndex); if (!pDauNegRD) return 0x0;
-
-  Double_t dMegField = fEventESD->GetMagneticField();
-  Double_t dPosDCAtoPV = TMath::Abs(pDauPosRD->GetD(fPrimaryVtx[0],fPrimaryVtx[1],dMegField)); if (dPosDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-  Double_t dNegDCAtoPV = TMath::Abs(pDauNegRD->GetD(fPrimaryVtx[0],fPrimaryVtx[1],dMegField)); if (dNegDCAtoPV<fCutMinDauDCAtoPV) return 0x0;
-//=============================================================================
-
-  if (!(pDauPosRD->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-  if (!(pDauNegRD->GetStatus() & AliESDtrack::kTPCrefit)) return 0x0;
-  if ((pDauPosRD->GetKinkIndex(0)>0) || (pDauNegRD->GetKinkIndex(0)>0)) return 0x0;
-
-  Float_t dPosXrowsTPC = pDauPosRD->GetTPCClusterInfo(2,1);
-  Float_t dNegXrowsTPC = pDauNegRD->GetTPCClusterInfo(2,1);
-  Float_t dDauXrowsTPC = dPosXrowsTPC; if (dDauXrowsTPC>dNegXrowsTPC) dDauXrowsTPC = dNegXrowsTPC;
-  if (dDauXrowsTPC<fCutMinDauXrowsTPC) return 0x0;
-
-  UShort_t wPosTPCNClsF = pDauPosRD->GetTPCNclsF(); if (wPosTPCNClsF<=0) return 0x0;
-  UShort_t wNegTPCNClsF = pDauNegRD->GetTPCNclsF(); if (wNegTPCNClsF<=0) return 0x0;
-  Double_t dPosXrowsOverFindableClusTPC = ((Double_t)dPosXrowsTPC) / ((Double_t)wPosTPCNClsF);
-  Double_t dNegXrowsOverFindableClusTPC = ((Double_t)dNegXrowsTPC) / ((Double_t)wNegTPCNClsF);
-
-  Double_t dDauXrowsOverFindableClusTPC = dPosXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC>dNegXrowsOverFindableClusTPC) dDauXrowsOverFindableClusTPC = dNegXrowsOverFindableClusTPC;
-  if (dDauXrowsOverFindableClusTPC<fCutMinDauXrowsOverFindableClusTPC) return 0x0;
-//=============================================================================
-
-  Short_t nPosCharge = pDauPosRD->Charge();
-  Short_t nNegCharge = pDauNegRD->Charge();
-  if ((nPosCharge==0) || (nNegCharge==0) || (nPosCharge==nNegCharge)) return 0x0;
-
-  Double_t dPosPxPyPz[3] = { 0., 0., 0. };
-  Double_t dNegPxPyPz[3] = { 0., 0., 0. };
-  if ((nPosCharge<0) && (nNegCharge>0)) {
-    pDauPosRD = fEventESD->GetTrack(nNegIndex);
-    pDauNegRD = fEventESD->GetTrack(nPosIndex);
-
-    pV0RD->GetNPxPyPz(dPosPxPyPz[0], dPosPxPyPz[1], dPosPxPyPz[2]);
-    pV0RD->GetPPxPyPz(dNegPxPyPz[0], dNegPxPyPz[1], dNegPxPyPz[2]);
-  } else {
-    pV0RD->GetPPxPyPz(dPosPxPyPz[0], dPosPxPyPz[1], dPosPxPyPz[2]);
-    pV0RD->GetNPxPyPz(dNegPxPyPz[0], dNegPxPyPz[1], dNegPxPyPz[2]);
-  }
-
-  TVector3 v3Pos(dPosPxPyPz);
-  TVector3 v3Neg(dNegPxPyPz);
-
-  if ((v3Pos.Pt()<fCutMinDauPt) || (v3Neg.Pt()<fCutMinDauPt)) return 0x0;
-  Double_t dPosEta = v3Pos.Eta(); if ((dPosEta<fCutMinDauEta) || (dPosEta>fCutMaxDauEta)) return 0x0;
-  Double_t dNegEta = v3Neg.Eta(); if ((dNegEta<fCutMinDauEta) || (dNegEta>fCutMaxDauEta)) return 0x0;
-//=============================================================================
-
-  Int_t inp = TMath::Abs(pDauPosRD->GetLabel()); if (inp<0) return 0x0;
-  Int_t inn = TMath::Abs(pDauNegRD->GetLabel()); if (inn<0) return 0x0;
-  TParticle *pDauPosMC = ((AliMCParticle*)MCEvent()->GetTrack(inp))->Particle(); if (!pDauPosMC) return 0x0;
-  TParticle *pDauNegMC = ((AliMCParticle*)MCEvent()->GetTrack(inn))->Particle(); if (!pDauNegMC) return 0x0;
-
-  Int_t imp = pDauPosMC->GetFirstMother(); if (imp<0) return 0x0;
-  Int_t imn = pDauNegMC->GetFirstMother(); if (imn<0) return 0x0;
-  if (imp != imn) return 0x0;
-
-  TParticle *pV0MC = ((AliMCParticle*)MCEvent()->GetTrack(imp))->Particle(); if (!pV0MC) return 0x0;
-  if (((pV0MC->Y())<fCutMinV0Rap) || ((pV0MC->Y())>fCutMaxV0Rap)) return 0x0;
-
-  Int_t idvMC = pV0MC->GetPdgCode();
-  Int_t idp = pDauPosMC->GetPdgCode();
-  Int_t idn = pDauNegMC->GetPdgCode();
-  Bool_t bIsKshort = ((idp==211)  && (idn==-211)  && (idvMC== 310));
-  Bool_t bIsLambda = ((idp==2212) && (idn==-211)  && (idvMC== 3122));
-  Bool_t bIsAntiLa = ((idp==211)  && (idn==-2212) && (idvMC==-3122));
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  UInt_t wsvMC = 0;
-  if (imp<nPrimary)                          wsvMC |= AliPicoHeaderCJ::kPrimary;
-  if (pStack->IsPhysicalPrimary(imp))        wsvMC |= AliPicoHeaderCJ::kPhysicalPrimary;
-  if (pStack->IsSecondaryFromWeakDecay(imp)) wsvMC |= AliPicoHeaderCJ::kSecondaryFromWeakDecay;
-  if (pStack->IsSecondaryFromMaterial(imp))  wsvMC |= AliPicoHeaderCJ::kSecondaryFromMaterial;
-
-  Int_t  idmMC = 0;
-  UInt_t wsmMC = 0;
-  Double_t dMotherPt  = 0.;
-  Double_t dMotherEta = 0.;
-  Double_t dMotherRap = 0.;
-  if (bIsLambda || bIsAntiLa) {
-    Int_t imv = pV0MC->GetFirstMother(); if (imv>=0) {
-      TParticle *pMother = ((AliMCParticle*)MCEvent()->GetTrack(imv))->Particle();
-
-      if (pMother) {
-        idmMC = pMother->GetPdgCode();
-        if ((bIsLambda && ((idmMC== 3312) || (idmMC== 3322))) ||
-            (bIsAntiLa && ((idmMC==-3312) || (idmMC==-3322)))) {
-          dMotherPt  = pMother->Pt();
-          dMotherEta = pMother->Eta();
-          dMotherRap = pMother->Y();
-
-          if (imp<nPrimary)                          wsmMC |= AliPicoHeaderCJ::kPrimary;
-          if (pStack->IsPhysicalPrimary(imv))        wsmMC |= AliPicoHeaderCJ::kPhysicalPrimary;
-          if (pStack->IsSecondaryFromWeakDecay(imv)) wsmMC |= AliPicoHeaderCJ::kSecondaryFromWeakDecay;
-          if (pStack->IsSecondaryFromMaterial(imv))  wsmMC |= AliPicoHeaderCJ::kSecondaryFromMaterial;
-        }
-      }
-    }
-  }
-//=============================================================================
-
-  Double_t dV0CosPA = pV0RD->GetV0CosineOfPointingAngle(fPrimaryVtx[0], fPrimaryVtx[1], fPrimaryVtx[2]);
-
-  if (bIsKshort) if (dV0CosPA<fCutMinKshortCosPA) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if (dV0CosPA<fCutMinLambdaCosPA) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0DistToPV = 0.;
-  for (Int_t i=0; i<3; i++) dV0DistToPV +=  ((dV0Vtx[i]-fPrimaryVtx[i]) * (dV0Vtx[i]-fPrimaryVtx[i]));
-  Double_t dV0DistToPVoverP = TMath::Sqrt(dV0DistToPV) / (pV0RD->P()+1e-10);
-
-  if (bIsKshort) if ((dV0DistToPVoverP*fgkMassKshort)>fCutMaxKshortCtau) {
-    bIsKshort = kFALSE;
-  }
-
-  if (bIsLambda || bIsAntiLa) if ((dV0DistToPVoverP*fgkMassLambda)>fCutMaxLambdaCtau) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Double_t dV0ArmFrac = pV0RD->PtArmV0() / (TMath::Abs(pV0RD->AlphaV0())+1e-12);
-
-  if (bIsKshort && (fCutMaxKshortArmFrac>0.)) if (dV0ArmFrac>fCutMaxKshortArmFrac) {
-    bIsKshort = kFALSE;
-  }
-
-  if ((bIsLambda && bIsAntiLa) && (fCutMaxLambdaArmFrac>0.)) if (dV0ArmFrac>fCutMaxLambdaArmFrac) {
-    bIsLambda = kFALSE;
-    bIsAntiLa = kFALSE;
-  }
-
-  if (!(bIsKshort || bIsLambda || bIsAntiLa)) return 0x0;
-//=============================================================================
-
-  Int_t wMask = 0;
-
-  if (bIsKshort) {
-    TLorentzVector vPosPion; vPosPion.SetVectM(v3Pos, fgkMassPion);
-    TLorentzVector vNegPion; vNegPion.SetVectM(v3Neg, fgkMassPion);
-    TLorentzVector vKshort = vPosPion + vNegPion;
-
-    Double_t dKshortInvM = vKshort.M();
-    Double_t dLower = 0.430006 - 0.0110029*dV0Pt;
-    Double_t dUpper = 0.563707 + 0.0114979*dV0Pt;
-    if ((dKshortInvM<dLower) || (dKshortInvM>dUpper)) return 0x0;
-
-    if (fCutMinKshortDeltaM>0.) {
-      TLorentzVector vPosProton; vPosProton.SetVectM(v3Pos, fgkMassProton);
-      TLorentzVector vNegProton; vNegProton.SetVectM(v3Neg, fgkMassProton);
-
-      TLorentzVector vLamvda = vPosProton + vNegPion;
-      TLorentzVector vAntiLa = vNegProton + vPosPion;
-
-      Double_t dLambdaInvM = vLamvda.M();
-      Double_t dAntiLaInvM = vAntiLa.M();
-      if ((TMath::Abs(dLambdaInvM-fgkMassLambda)<fCutMinKshortDeltaM) ||
-          (TMath::Abs(dAntiLaInvM-fgkMassLambda)<fCutMinKshortDeltaM)) return 0x0;
-    }
-
-    wMask = AliPicoHeaderCJ::kKshort;
-  }
-
-  if (bIsLambda) {
-    TLorentzVector vPosProton; vPosProton.SetVectM(v3Pos, fgkMassProton);
-    TLorentzVector vNegPion; vNegPion.SetVectM(v3Neg, fgkMassPion);
-    TLorentzVector vLamvda = vPosProton + vNegPion;
-
-    Double_t dLambdaInvM = vLamvda.M();
-    Double_t dLower = 1.09501 - 0.00523272*dV0Pt - 0.075269*TMath::Exp(-3.46339*dV0Pt);
-    Double_t dUpper = 1.13688 + 0.00527838*dV0Pt + 0.084222*TMath::Exp(-3.80595*dV0Pt);
-    if ((dLambdaInvM<dLower) || (dLambdaInvM>dUpper)) return 0x0;
-
-    if (fCutMinLambdaDeletaM>0.) {
-      TLorentzVector vPosPion; vPosPion.SetVectM(v3Pos, fgkMassPion);
-      TLorentzVector vKshort = vPosPion + vNegPion;
-
-      Double_t dKshortInvM = vKshort.M();
-      if ((TMath::Abs(dKshortInvM-fgkMassKshort)<fCutMinLambdaDeletaM)) return 0x0;
-    }
-
-    wMask = AliPicoHeaderCJ::kLambda;
-  }
-
-  if (bIsAntiLa) {
-    TLorentzVector vNegProton; vNegProton.SetVectM(v3Neg, fgkMassProton);
-    TLorentzVector vPosPion; vPosPion.SetVectM(v3Pos, fgkMassPion);
-    TLorentzVector vAntiLa = vNegProton + vPosPion;
-  
-    Double_t dAntiLaInvM = vAntiLa.M();
-    Double_t dLower = 1.09501 - 0.00523272*dV0Pt - 0.075269*TMath::Exp(-3.46339*dV0Pt);
-    Double_t dUpper = 1.13688 + 0.00527838*dV0Pt + 0.084222*TMath::Exp(-3.80595*dV0Pt);
-    if ((dAntiLaInvM<dLower) || (dAntiLaInvM>dUpper)) return 0x0;
-  
-    if (fCutMinLambdaDeletaM>0.) {
-      TLorentzVector vNegPion; vNegPion.SetVectM(v3Neg, fgkMassPion);
-      TLorentzVector vKshort = vPosPion + vNegPion;
-
-      Double_t dKshortInvM = vKshort.M();
-      if ((TMath::Abs(dKshortInvM-fgkMassKshort)<fCutMinLambdaDeletaM)) return 0x0;
-    }
-
-    wMask = AliPicoHeaderCJ::kAntiLambda;
-  }
-//=============================================================================
-
-  Bool_t bPosInJC = kFALSE;
-  Bool_t bNegInJC = kFALSE;
-  AliPicoV0MC *pPicoV0 = new AliPicoV0MC(wMask,
-                                         dV0Radius,
-                                         dV0CosPA,
-                                         dV0DistToPVoverP,
-                                         dDausDCA,
-                                         dPosDCAtoPV,
-                                         dNegDCAtoPV,
-                                         dDauXrowsTPC,
-                                         dDauXrowsOverFindableClusTPC,
-                                         v3Pos.Px(), v3Pos.Py(), v3Pos.Pz(),
-                                         v3Neg.Px(), v3Neg.Py(), v3Neg.Pz(),
-                                         bPosInJC, bNegInJC,
-                                         idvMC, wsvMC, pV0MC->Px(), pV0MC->Py(), pV0MC->Pz(), pV0MC->Energy(),
-                                         idmMC, wsmMC, dMotherPt, dMotherEta, dMotherRap);
-
-
-  return pPicoV0;
-}
-
-//_____________________________________________________________________________
-Bool_t AliAnalysisTaskSEPicoV0Maker::IsEventNotAcpt()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::IsEventNotAcpt
-//
-
-  fEventAcptMask = 0;
-  if (!InputEvent())  return (fEventAcptMask==0);
-  if (!fInputHandler) return (fEventAcptMask==0);
-
-  if (fCollisionType!=(AliPicoHeaderCJ::kPP)) {
-    fCentInfo = InputEvent()->GetCentrality();
-    if (!fCentInfo) return (fEventAcptMask==0);
-  }
-
-  fEventAOD = dynamic_cast<AliAODEvent*>(InputEvent());
-  fEventESD = dynamic_cast<AliESDEvent*>(InputEvent());
-  if ((!fEventAOD) && (!fEventESD)) return (fEventAcptMask==0);
-
-  fRespoPID = fInputHandler->GetPIDResponse();
-  if (!fRespoPID) return kTRUE;
-
-  if (fIsAnaInfoMC) {
-     if (MCEvent()) {
-      if (MCEvent()->GetNumberOfTracks()<=0) return (fEventAcptMask==0);
-    } else return (fEventAcptMask==0);
-
-    AliHeader *pHeader = MCEvent()->Header(); if (!pHeader) return (fEventAcptMask==0);
-
-    if (fIsDPMjetMC) {
-      AliGenDPMjetEventHeader *pDPMjetH = dynamic_cast<AliGenDPMjetEventHeader*>(pHeader->GenEventHeader());
-
-      if (pDPMjetH) {
-        Int_t nd0=0, nd1=0, nd2=0; pDPMjetH->GetNDiffractive(nd1, nd2, nd0);
-        if ((nd1+nd2) != (pDPMjetH->ProjectileParticipants() + pDPMjetH->TargetParticipants())) return (fEventAcptMask==0);
-      }
-    }
-  }
-
-  fEventAcptMask |= AliPicoHeaderCJ::kEventAccCheck;
-//=============================================================================
-
-  if (fCollisionType==(AliPicoHeaderCJ::kPP)) {
-    fEventAcptMask |= AliPicoHeaderCJ::kEventAccMult;
-  } else {
-    if (fCentInfo->GetQuality()==0)
-      fEventAcptMask |= AliPicoHeaderCJ::kEventAccMult;
-    else
-      return (fEventAcptMask==0);
-  }
-//=============================================================================
-
-  UInt_t wMask = fInputHandler->IsEventSelected();
-  if ((wMask & fTriggerMask) != fTriggerMask) return (fEventAcptMask==0);
-  if (fIsSkipFastOnly) if ((wMask & AliVEvent::kFastOnly) == AliVEvent::kFastOnly) return (fEventAcptMask==0);
-
-  fEventAcptMask |= AliPicoHeaderCJ::kEventAccTrigger;
-//=============================================================================
-
-  const AliVVertex *pVertex = InputEvent()->GetPrimaryVertex(); if (!pVertex) return (fEventAcptMask==0);
-  pVertex->GetXYZ(fPrimaryVtx); if (TMath::Abs(fPrimaryVtx[2])>fCutMaxEventVzAbs) return (fEventAcptMask==0);
-
-  if ((fCollisionType==(AliPicoHeaderCJ::kPA)) || (fCollisionType==(AliPicoHeaderCJ::kAP))) {
-    if ( fAnaUtils->IsFirstEventInChunk(InputEvent()))    return (fEventAcptMask==0);
-    if (!fAnaUtils->IsVertexSelected2013pA(InputEvent())) return (fEventAcptMask==0);
-
-/*  if (fEventAOD) {
-      const AliAODVertex *pVtxSPD = fEventAOD->GetPrimaryVertexSPD();
-      const AliAODVertex *pVtxTrk = fEventAOD->GetPrimaryVertex();
-      if ((!pVtxSPD) && (!pVtxTrk)) return (fEventAcptMask==0);
-    }*/
-
-/*  if (fEventESD) {
-      Bool_t fHasVertex = kFALSE;
-      const AliESDVertex *pVtxESD = fEventESD->GetPrimaryVertexTracks();
-      if (pVtxESD->GetNContributors()<1) {
-        pVtxESD = fEventESD->GetPrimaryVertexSPD();
-        if (pVtxESD->GetNContributors()<1) fHasVertex = kFALSE;
-        else fHasVertex = kTRUE;
-
-        TString vtxTyp = pVtxESD->GetTitle();
-        Double_t cov[6] = { 0., 0., 0., 0., 0., 0. };
-        pVtxESD->GetCovarianceMatrix(cov);
-        Double_t zRes = TMath::Sqrt(cov[5]);
-        if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
-      } else fHasVertex = kTRUE;
-
-      if (!fHasVertex) return (fEventAcptMask==0);
-    }*/
-
-  } else {
-    if (fEventAOD) {
-      const AliAODVertex *pVtxSPD = fEventAOD->GetPrimaryVertexSPD(); if (!pVtxSPD) return (fEventAcptMask==0);
-      const AliAODVertex *pVtxTrk = fEventAOD->GetPrimaryVertex();    if (!pVtxTrk) return (fEventAcptMask==0);
-    }
-
-    if (fEventESD) {
-      const AliESDVertex *pVtxPri = fEventESD->GetPrimaryVertex();       if (!pVtxPri) return (fEventAcptMask==0);
-      const AliESDVertex *pVtxSPD = fEventESD->GetPrimaryVertexSPD();    if (!pVtxSPD) return (fEventAcptMask==0);
-      const AliESDVertex *pVtxTrk = fEventESD->GetPrimaryVertexTracks(); if (!pVtxTrk) return (fEventAcptMask==0);
-      if ((!(pVtxPri->GetStatus())) && (!(pVtxSPD->GetStatus())) && (!(pVtxTrk->GetStatus()))) return (fEventAcptMask==0);
-    }
-  }
-
-  fEventAcptMask |= AliPicoHeaderCJ::kEventAccVertex;
-//=============================================================================
-
-  if ((fCollisionType==AliPicoHeaderCJ::kPP) ||
-      (fCollisionType==AliPicoHeaderCJ::kPA) ||
-      (fCollisionType==AliPicoHeaderCJ::kAP)) {
-    if (fAnaUtils->IsPileUpEvent(InputEvent())) return (fEventAcptMask==0);
-  }
-
-  fEventAcptMask |= AliPicoHeaderCJ::kEventAccPileup;
-//=============================================================================
-
-  if (fIsRefitV0sESD && fEventESD) {
-    Double_t dCuts[7] = { fCutMaxV0Chi2,
-                          fCutMinDauDCAtoPV,
-                          fCutMinDauDCAtoPV,
-                          fCutMaxDausDCA,
-                          fCutMinKshortCosPA,
-                          fCutMinV0Radius,
-                          fCutMaxV0Radius };
-
-    fEventESD->ResetV0s();
-    AliV0vertexer aV0vtxer;
-    aV0vtxer.SetDefaultCuts(dCuts);
-    aV0vtxer.Tracks2V0vertices(fEventESD);
-  }
-
-  return (fEventAcptMask==0);
-}
-
-//_____________________________________________________________________________
-Bool_t AliAnalysisTaskSEPicoV0Maker::IsEventNotINEL()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::IsEventNotINEL
-//
-
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccCheck) != AliPicoHeaderCJ::kEventAccCheck) return kTRUE;
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccMult)  != AliPicoHeaderCJ::kEventAccMult)  return kTRUE;
-
-  return kFALSE;
-}
-
-//_____________________________________________________________________________
-Bool_t AliAnalysisTaskSEPicoV0Maker::IsEventNotMBsa()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::IsEventNotMBsa
-//
-
-  if (IsEventNotINEL()) return kTRUE;
-
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccTrigger) != AliPicoHeaderCJ::kEventAccTrigger) return kTRUE;
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccVertex)  != AliPicoHeaderCJ::kEventAccVertex)  return kTRUE;
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccPileup)  != AliPicoHeaderCJ::kEventAccPileup)  return kTRUE;
-
-  return kFALSE;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::FillHistogramsEH()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::FillHistogramsEH
-//
-
-  Float_t dV0M = fCentInfo->GetCentralityPercentile("V0M");
-  Float_t dV0A = fCentInfo->GetCentralityPercentile("V0A");
-  Float_t dCL1 = fCentInfo->GetCentralityPercentile("CL1");
-  Float_t dZNA = fCentInfo->GetCentralityPercentile("ZNA");
-
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccCheck) == AliPicoHeaderCJ::kEventAccCheck) {
-    ((TH1D*)fOutputListEH->FindObject("hEventAccCheck_V0M"))->Fill(dV0M);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccCheck_V0A"))->Fill(dV0A);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccCheck_CL1"))->Fill(dCL1);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccCheck_ZNA"))->Fill(dZNA);
-  }
-
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccMult) == AliPicoHeaderCJ::kEventAccMult) {
-    ((TH1D*)fOutputListEH->FindObject("hEventAccMult_V0M"))->Fill(dV0M);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccMult_V0A"))->Fill(dV0A);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccMult_CL1"))->Fill(dCL1);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccMult_ZNA"))->Fill(dZNA);
-  }
-
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccTrigger) == AliPicoHeaderCJ::kEventAccTrigger) {
-    ((TH1D*)fOutputListEH->FindObject("hEventAccTrigger_V0M"))->Fill(dV0M);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccTrigger_V0A"))->Fill(dV0A);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccTrigger_CL1"))->Fill(dCL1);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccTrigger_ZNA"))->Fill(dZNA);
-  }
-
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccVertex) == AliPicoHeaderCJ::kEventAccVertex) {
-    ((TH1D*)fOutputListEH->FindObject("hEventAccVertex_V0M"))->Fill(dV0M);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccVertex_V0A"))->Fill(dV0A);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccVertex_CL1"))->Fill(dCL1);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccVertex_ZNA"))->Fill(dZNA);
-  }
-
-  if ((fEventAcptMask & AliPicoHeaderCJ::kEventAccPileup) == AliPicoHeaderCJ::kEventAccPileup) {
-    ((TH1D*)fOutputListEH->FindObject("hEventAccPileup_V0M"))->Fill(dV0M);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccPileup_V0A"))->Fill(dV0A);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccPileup_CL1"))->Fill(dCL1);
-    ((TH1D*)fOutputListEH->FindObject("hEventAccPileup_ZNA"))->Fill(dZNA);
-  }
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::FillHistogramsMC()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::FillHistogramsMC
-//
-
-  Int_t   nPrimary = 0;
-  AliStack *pStack = 0;
-
-  if (fEventESD) {
-    pStack   = MCEvent()->Stack(); if (!pStack) return;
-    nPrimary = pStack->GetNprimary();
-  }
-//=============================================================================
-
-  Double_t dEvType = -0.5;
-  if (IsEventNotMBsa()) dEvType = 0.5;
-
-  Double_t dV0M = fCentInfo->GetCentralityPercentile("V0M");
-  Double_t dV0A = fCentInfo->GetCentralityPercentile("V0A");
-  Double_t dCL1 = fCentInfo->GetCentralityPercentile("CL1");
-  Double_t dZNA = fCentInfo->GetCentralityPercentile("ZNA");
-
-  THnSparseD *hsV0 = dynamic_cast<THnSparseD*>(fOutputListMC->FindObject("hsV0"));
-  THnSparseD *hsXi = dynamic_cast<THnSparseD*>(fOutputListMC->FindObject("hsXi"));
-
-  if (hsV0 == 0 || hsXi == 0) { // Keep Coverity happy
-    AliFatal("Cannot find hsV0 or hsXi; should not happen");
-    return;
-  }  // Keep Coverity happy
-//=============================================================================
-
-  TParticle        *pESD = 0;
-  AliAODMCParticle *pAOD = 0;
-  for (Int_t i=0; i<MCEvent()->GetNumberOfTracks(); i++) {
-    if (fEventAOD) { pAOD = (AliAODMCParticle*)MCEvent()->GetTrack(i);              if (!pAOD) continue; }
-    if (fEventESD) { pESD =   ((AliMCParticle*)MCEvent()->GetTrack(i))->Particle(); if (!pESD) continue; }
-
-    Bool_t bPri = kFALSE;
-    if (pAOD) bPri = pAOD->IsPrimary();
-    if (pESD) bPri = (i<nPrimary);
-
-    Bool_t bPhy = kFALSE;
-    if (pAOD) bPhy =   pAOD->IsPhysicalPrimary();
-    if (pESD) bPhy = pStack->IsPhysicalPrimary(i);
-    if ((!bPri) && (!bPhy)) { pAOD=0; pESD=0; continue; }
-
-    Int_t id = 0;
-    if (pAOD) id = pAOD->GetPdgCode();
-    if (pESD) id = pESD->GetPdgCode();
-
-    Bool_t bXi = (bPri && ((id==3312) || (id==-3312)));
-    Bool_t bV0 = (bPhy && ((id==3122) || (id==-3122) || (id==310)));
-    if (!(bXi || bV0)) { pAOD=0; pESD=0; continue; }
-
-    Double_t  dEta = 0.;
-    if (pAOD) dEta = pAOD->Eta();
-    if (pESD) dEta = pESD->Eta();
-    if ((dEta<-5.) || (dEta>=5.)) { pAOD=0; pESD=0; continue; }
-
-    Double_t  dRapLab = 0.;
-    if (pAOD) dRapLab = pAOD->Y();
-    if (pESD) dRapLab = pESD->Y();
-    if ((dRapLab<-5.) || (dRapLab>=5.)) { pAOD=0; pESD=0; continue; }
-
-    Double_t dRapCMS = dRapLab + fRapidityShift;
-    if ((dRapCMS<-5.) || (dRapCMS>=5.)) { pAOD=0; pESD=0; continue; }
-
-    Double_t dVar[10];
-    if (pAOD) dVar[9] = pAOD->Pt();
-    if (pESD) dVar[9] = pESD->Pt();
-
-    dVar[1] = dEvType;
-    dVar[2] = dV0M;
-    dVar[3] = dV0A;
-    dVar[4] = dCL1;
-    dVar[5] = dZNA;
-    dVar[6] = dEta;
-    dVar[7] = dRapLab;
-    dVar[8] = dRapCMS;
-
-    if (bXi) {
-      if (id== 3312) dVar[0] = -0.5;
-      if (id==-3312) dVar[0] =  0.5;
-      hsXi->Fill(dVar);
-    }
-
-    if (bV0) {
-      if (id== 310 ) dVar[0] = 0.;
-      if (id== 3122) dVar[0] = 1.;
-      if (id==-3122) dVar[0] = 2.;
-      hsV0->Fill(dVar);
-    }
-
-    pAOD = 0;
-    pESD = 0;
-  }
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::CreateHistogramsEH()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::CreateHistogramsEH
-//
-
-  Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
-  TH1::AddDirectory(kFALSE);
-//=============================================================================
-
-  TH1D *h1 = 0;
-  h1 = new TH1D("hEventAccCheck_V0M", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccCheck_V0A", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccCheck_CL1", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccCheck_ZNA", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-
-  h1 = new TH1D("hEventAccMult_V0M", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccMult_V0A", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccMult_CL1", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccMult_ZNA", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-
-  h1 = new TH1D("hEventAccTrigger_V0M", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccTrigger_V0A", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccTrigger_CL1", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccTrigger_ZNA", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-
-  h1 = new TH1D("hEventAccVertex_V0M", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccVertex_V0A", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccVertex_CL1", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccVertex_ZNA", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-
-  h1 = new TH1D("hEventAccPileup_V0M", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccPileup_V0A", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccPileup_CL1", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-  h1 = new TH1D("hEventAccPileup_ZNA", "", 210, -10., 200.); h1->Sumw2(); fOutputListEH->Add(h1);
-
-
-  TH2D *h2 = 0;
-  h2 = new TH2D("hKshortPtInvM", "", 1000, 0., 100., 300, fgkMassKshort-0.15, fgkMassKshort+0.15);
-  h2->Sumw2(); fOutputListEH->Add(h2); h2=0;
-
-  h2 = new TH2D("hLambdaPtInvM", "", 1000, 0., 100., 200, fgkMassLambda-0.10, fgkMassLambda+0.10);
-  h2->Sumw2(); fOutputListEH->Add(h2); h2=0;
-
-  h2 = new TH2D("hAntiLaPtInvM", "", 1000, 0., 100., 200, fgkMassLambda-0.10, fgkMassLambda+0.10);
-  h2->Sumw2(); fOutputListEH->Add(h2); h2=0;
-
-  TH1::AddDirectory(bStatusTmpH);
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::CreateHistogramsMC()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::CreateHistogramsMC
-//
-
-// TODO: add the multiplicity bins
-
-  Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
-  TH1::AddDirectory(kFALSE);
-
-  const Int_t nV0 = 10; // 0: particle type
-                        //    ==0, Kshort
-                        //    ==1, Lambda
-                        //    ==2, AntiLa
-                        // 1: Event type
-                        //    ==-0.5, INEL
-                        //    == 0.5, MB
-                        // 2: V0M
-                        // 3: V0A
-                        // 4: CL1
-                        // 5: ZNA
-                        // 6: eta
-                        // 7: rap in Lab
-                        // 8: rap in CMS
-                        // 9: Pt
-  const Int_t    nV0Bin[nV0] = {  3,    2,  210,  210,  210,  210, 100, 100, 100, 1000  };
-  const Double_t dV0Min[nV0] = { -0.5, -1., -10., -10., -10., -10., -5., -5., -5.,   0. };
-  const Double_t dV0Max[nV0] = {  2.5,  1., 200., 200., 200., 200.,  5.,  5.,  5., 100. };
-  THnSparseD *hsV0 = new THnSparseD("hsV0", "", nV0, nV0Bin, dV0Min, dV0Max); fOutputListMC->Add(hsV0);
-//=============================================================================
-
-  const Int_t nXi = 10; // 0: particle type
-                        //    ==-0.5, XiNeg
-                        //    == 0.5, XiPos
-                        // 1: Event type
-                        //    ==-0.5, INEL
-                        //    == 0.5, MB
-                        // 2: V0M
-                        // 3: V0A
-                        // 4: CL1
-                        // 5: ZNA
-                        // 6: eta
-                        // 7: rap in Lab
-                        // 8: rap in CMS
-                        // 9: Pt
-  const Int_t    nXiBin[nV0] = {  2,   2,  210,  210,  210,  210, 100, 100, 100, 1000  };
-  const Double_t dXiMin[nV0] = { -1., -1., -10., -10., -10., -10., -5., -5., -5.,   0. };
-  const Double_t dXiMax[nV0] = {  1.,  1., 200., 200., 200., 200.,  5.,  5.,  5., 100. };
-  THnSparseD *hsXi = new THnSparseD("hsXi", "", nXi, nXiBin, dXiMin, dXiMax); fOutputListMC->Add(hsXi);
-
-  TH1::AddDirectory(bStatusTmpH);
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::InitAnalysis()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::InitAnalysis
-//
-
-  if (fCollisionType==(AliPicoHeaderCJ::kPP)) InitParamsPP();
-  if (fCollisionType==(AliPicoHeaderCJ::kPA)) InitParamsPA();
-  if (fCollisionType==(AliPicoHeaderCJ::kAP)) InitParamsAP();
-  if (fCollisionType==(AliPicoHeaderCJ::kAA)) InitParamsAA();
-
-  fAnaUtils = new AliAnalysisUtils();
-  fAnaUtils->SetMinVtxContr(fCutMinEventVtxContr);
-  fAnaUtils->SetMaxVtxZ(fCutMaxEventVzAbs);
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::InitParamsPP()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::InitParametersPP
-//
-
-  fRapidityShift = 0.;
-
-  fCutMaxEventVzAbs = 10.;
-//=============================================================================
-
-  fCutMaxV0Chi2   = 33.;
-  fCutMinV0Radius = 0.3;   // default: >0.5; uncertainty: >0.3, 0.4, 0.6, 0.7;
-  fCutMaxV0Radius = 200.;  // default: not applied in pp
-//=============================================================================
-
-  fCutMaxDausDCA                     = 1.5;  // default: <1;    uncertainty: <0.5, 0.75, 1.25, 1.5
-  fCutMinDauDCAtoPV                  = 0.05; // default: >0.06; uncertainty: >0.05, 0.055, 0.07, 0.08
-  fCutMinDauXrowsTPC                 = 70.;  // default: >70;   uncertainty: >75, 80
-  fCutMinDauXrowsOverFindableClusTPC = 0.8;  // default: >0.8;  uncertainty: >0.95
-//=============================================================================
-
-  fCutMaxKshortSigmaTPC = -1.;   // default: <5;     uncertainty: w/o cut
-  fCutMinKshortCosPA    = 0.95;  // default: >0.97;  uncertainty: >0.95, 0.96, 0.98, 0.99
-  fCutMaxKshortCtau     = 30.;   // default: <20;    uncertainty: <12, 30
-  fCutMaxKshortArmFrac  = -1.;   // default: not applied in pp
-  fCutMinKshortDeltaM   = 0.003; // default: >0.005; uncertainty: >0.003, 0.006
-//=============================================================================
-
-  fCutMaxLambdaSigmaTPC  = 7.;    // default: <5;     uncertainty: 4, 6, 7
-  fCutMinLambdaCosPA     = 0.993; // default: >0.995; uncertainty: >0.993, 0.994, 0.996, 0.997
-  fCutMaxLambdaCtau      = 40.;   // default: <30;    uncertainty: <20, 40
-  fCutMaxLambdaArmFrac   = -1.;   // default: not applied in pp
-  fCutMinLambdaDeletaM   = -1.;   // default: >0.01;  uncertainty: w/o rejection
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::InitParamsPA()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::InitParametersPA
-//
-
-  InitParamsPP();
-
-  fRapidityShift = 0.465;
-
-  fCutMaxLambdaSigmaTPC = 6;  // default: <5; uncertaity: <4, 6
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::InitParamsAP()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::InitParametersAP
-//
-
-  InitParamsPP();
-
-  fRapidityShift = -0.465;
-
-  fCutMaxLambdaSigmaTPC = 6;  // default: <5; uncertaity: <4, 6
-
-  return;
-}
-
-//_____________________________________________________________________________
-void AliAnalysisTaskSEPicoV0Maker::InitParamsAA()
-{
-//
-//  AliAnalysisTaskSEPicoV0Maker::InitParametersAA
-//
-
-  InitParamsPP();
-
-  fCutMinV0Radius = 0.9;  // default: 5; uncertainty: varying around
-  fCutMaxV0Radius = 100.;
-
-//fCutMinDauPt      = 0.16;  // default: 0.16
-  fCutMinDauDCAtoPV = 0.08;  // default: 0.1; uncertainty: 0.08, 0.12
-
-  fCutMaxKshortSigmaTPC = 6;      // default: <5;     uncertainty: <4, 6;
-  fCutMinKshortCosPA    = 0.997;  // default: >0.998; uncertainty: 0.997, 0.999
-  fCutMaxKshortArmFrac  = 0.2;    // default: <0.2
-
-  fCutMaxLambdaSigmaTPC = 6;      // default: <5;     uncertaity: <4, 6
-  fCutMinLambdaCosPA    = 0.997;  // default: >0.998; uncertainty: 0.997, 0.999
-  fCutMinLambdaDeletaM  = 0.008;  // default: >0.01;  uncertainty: 0.008, 0.012
-
-  return;
-}