ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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.                  *
 **************************************************************************/

/*
 * author: M.Kalisky@gsi.de
 * 08/Dec/2010
 *
 * Description: This class allows with purely kinematical cuts
 * to select clean samples of electrons, pions and protons from the
 * V0 online finder ESD V0 candidates for PID and dectector resonse
 * studies.
 */

#include <TVector3.h>
#include <TDatabasePDG.h>

#include "AliESDv0.h"
#include "AliESDtrack.h"
#include "AliESDEvent.h"
#include "AliVEvent.h"
#include "AliLog.h"
#include "AliKFParticle.h"
#include "AliVTrack.h"
#include "AliKFVertex.h"

#include "AliESDv0KineCuts.h"

ClassImp(AliESDv0KineCuts)

//____________________________________________________________________
AliESDv0KineCuts::AliESDv0KineCuts() :
  fEvent(0x0)
  , fPrimaryVertex(0x0)
  , fType(0)
  , fMode(0)
  , fTPCNcls(1)
  , fTPCrefit(kTRUE)
  , fTPCchi2perCls(4.0)
  , fTPCclsRatio(0.6)
  , fNoKinks(kTRUE)
  , fGcutChi2NDF(10)
  , fGcutInvMass(0.05)
  , fK0cutChi2NDF(10)
  , fLcutChi2NDF(10)
  , fUseExternalVertex(kFALSE)
  , fDeleteVertex(kFALSE)
{
  //
  // Default constructor
  //

  // default single track cuts
  fTPCNcls = 1;                // minimal number of the TPC clusters
  fTPCrefit = kTRUE;           // TPC refit
  fTPCchi2perCls = 4.0;        // chi2 per TPC cluster
  fTPCclsRatio = 0.6;          // minimal foun/findable TPC cluster ratio
  fNoKinks = kTRUE;            // kinks - no [kTRUE] or do not care [kFalse]


  // default gamma cuts values
  fGcutChi2NDF = 10;           // Chi2NF cut value for the AliKFparticle gamma
  fGcutCosPoint[0] = 0;        // cos of the pointing angle [min, max]
  fGcutCosPoint[1] = 0.02;     // cos of the pointing angle [min, max]
  fGcutDCA[0] = 0.;            // DCA between the daughter tracks [min, max]
  fGcutDCA[1] = 0.25;          // DCA between the daughter tracks [min, max]
  fGcutVertexR[0] = 3.;        // radius of the conversion point [min, max]
  fGcutVertexR[1] = 90.;       // radius of the conversion point [min, max]
  fGcutPsiPair[0] = 0.;        // value of the psi pair cut [min, max]
  fGcutPsiPair[1] = 0.05;      // value of the psi pair cut [min, max]
  fGcutInvMass = 0.05;         // upper value on the gamma invariant mass
  // default K0 cuts
  fK0cutChi2NDF = 10;          // Chi2NF cut value for the AliKFparticle K0
  fK0cutCosPoint[0] = 0.;      // cos of the pointing angle [min, max]
  fK0cutCosPoint[1] = 0.02;    // cos of the pointing angle [min, max]
  fK0cutDCA[0] = 0.;           // DCA between the daughter tracks [min, max]
  fK0cutDCA[1] = 0.2;          // DCA between the daughter tracks [min, max]
  fK0cutVertexR[0] = 2.0;      // radius of the decay point [min, max]
  fK0cutVertexR[1] = 30.0;     // radius of the decay point [min, max]
  fK0cutInvMass[0] = 0.486;    // invariant mass window
  fK0cutInvMass[1] = 0.508;    // invariant mass window
  // Lambda & anti-Lambda cut values
  fLcutChi2NDF = 10;           // Chi2NF cut value for the AliKFparticle K0
  fLcutCosPoint[0] = 0.;       // cos of the pointing angle [min, max]
  fLcutCosPoint[1] = 0.02;     // cos of the pointing angle [min, max]
  fLcutDCA[0] = 0.;            // DCA between the daughter tracks [min, max]
  fLcutDCA[1] = 0.2;           // DCA between the daughter tracks [min, max]
  fLcutVertexR[0] = 2.0;       // radius of the decay point [min, max]
  fLcutVertexR[1] = 40.0;      // radius of the decay point [min, max]
  fLcutInvMass[0] = 1.11;      // invariant mass window
  fLcutInvMass[1] = 1.12;      // invariant mass window
    
}
//____________________________________________________________________
AliESDv0KineCuts::~AliESDv0KineCuts(){
  //
  // Destructor
  //


}
//____________________________________________________________________
AliESDv0KineCuts::AliESDv0KineCuts(const AliESDv0KineCuts &ref):
  TObject(ref)
  , fEvent(0x0)
  , fPrimaryVertex(0x0)
  , fType(0)
  , fMode(0)
  , fTPCNcls(1)
  , fTPCrefit(kTRUE)
  , fTPCchi2perCls(4.0)
  , fTPCclsRatio(0.6)
  , fNoKinks(kTRUE)
  , fGcutChi2NDF(10)
  , fGcutInvMass(0.05)
  , fK0cutChi2NDF(10)
  , fLcutChi2NDF(10)
  , fUseExternalVertex(kFALSE)
  , fDeleteVertex(kFALSE)
{
  //
  // Copy operator
  //

  ref.Copy(*this);
}
//____________________________________________________________________
AliESDv0KineCuts &AliESDv0KineCuts::operator=(const AliESDv0KineCuts &ref){
  //
  // assignment operator
  //
  if(this != &ref)
    ref.Copy(*this);
  return *this; 
}
//____________________________________________________________________
void AliESDv0KineCuts::Copy(TObject &ref) const {
  //
  // Performs the copying of the object
  //

  TObject::Copy(ref);

  AliESDv0KineCuts &target = dynamic_cast<AliESDv0KineCuts &>(ref);

  // default single track cuts
  target.fTPCNcls = fTPCNcls;
  target.fTPCrefit = fTPCrefit;
  target.fTPCchi2perCls = fTPCchi2perCls;
  target.fTPCclsRatio = fTPCclsRatio;
  target.fNoKinks = fNoKinks;
  target.fUseExternalVertex = fUseExternalVertex;  //added december 2nd 2011
  target.fDeleteVertex = fDeleteVertex;  //added december 2nd 2011

  // default gamma cuts values
  target.fGcutChi2NDF = fGcutChi2NDF;
  memcpy(target.fGcutCosPoint, fGcutCosPoint, sizeof(Float_t) * 2);
  memcpy(target.fGcutDCA, fGcutDCA, sizeof(Float_t) * 2); 
  memcpy(target.fGcutVertexR, fGcutVertexR, sizeof(Float_t) * 2);
  memcpy(target.fGcutPsiPair, fGcutPsiPair, sizeof(Float_t) * 2);
  target.fGcutInvMass = fGcutInvMass;
  // default K0 cuts
  target.fK0cutChi2NDF = fK0cutChi2NDF;
  memcpy(target.fK0cutCosPoint, fK0cutCosPoint, sizeof(Float_t) * 2);
  memcpy(target.fK0cutDCA, fK0cutDCA, sizeof(Float_t) * 2);
  memcpy(target.fK0cutVertexR, fK0cutVertexR, sizeof(Float_t) * 2);
  memcpy(target.fK0cutInvMass, fK0cutInvMass, sizeof(Float_t) * 2);
  // Lambda & anti-Lambda cut values
  target.fLcutChi2NDF = fLcutChi2NDF;
  memcpy(target.fLcutCosPoint, fLcutCosPoint, sizeof(Float_t) * 2);
  memcpy(target.fLcutDCA, fLcutDCA, sizeof(Float_t) * 2);
  memcpy(target.fLcutVertexR, fLcutVertexR, sizeof(Float_t) * 2);
  memcpy(target.fLcutInvMass, fLcutInvMass, sizeof(Float_t) * 2);
  
}
//____________________________________________________________________
Bool_t  AliESDv0KineCuts::ProcessV0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const 
{
  //
  // main user function
  //

  if(!v0) return kFALSE;
  if(!fEvent){
    AliErrorClass("No valid Event pointer available, provide it first");
    return kFALSE;
  }

  if(!V0CutsCommon(v0)) return kFALSE;

  const Int_t id = PreselectV0(v0);

  if(!SingleTrackCuts(v0)) return kFALSE;

  switch(id){
  case kUndef:
    return kFALSE;
  case kGamma:
    return CaseGamma(v0, pdgV0, pdgP, pdgN);
  case kK0:
    return CaseK0(v0, pdgV0, pdgP, pdgN);
  case kLambda:
    return CaseLambda(v0, pdgV0, pdgP, pdgN, 0);
  case kALambda:
    return CaseLambda(v0, pdgV0, pdgP, pdgN, 1);
  default:
    return kFALSE; 
  }

  return kFALSE;
}
//____________________________________________________________________
Bool_t  AliESDv0KineCuts::ProcessV0(AliESDv0* const v0, Int_t &pdgP, Int_t &pdgN) const 
{
  //
  // main user function, simplified if the V0 identity is not necessary
  //

  if(!v0) return kFALSE;
  if(!fEvent){
    AliErrorClass("No valid Event pointer available, provide it first");
    return kFALSE;
  }

  Int_t idV0 = -1;
  return ProcessV0(v0, idV0, pdgP, pdgN);

}
//____________________________________________________________________
Int_t AliESDv0KineCuts::PreselectV0(AliESDv0* const v0) const 
{
  //
  // Make a preselection (exclusive) of the V0 cadidates based on
  // Armenteros plot
  // the armenteros cut values are currently fixed and user is not able to set them via
  // set funcions. The reason is that these cuts are optimized and furneter changes should 
  // not be necessary. To prove otherwise please study in detail before changing the values
  //
 
  Float_t ap[2] = {-1., -1.};
  Armenteros(v0, ap);
  // for clarity
  const Float_t alpha = ap[0];
  const Float_t qt = ap[1];

  // selection cuts 
  // - the reagions for different candidates must not overlap 

  // Gamma cuts
  const Double_t cutAlphaG = 0.35; 
  const Double_t cutQTG = 0.05;
  const Double_t cutAlphaG2[2] = {0.6, 0.8};
  const Double_t cutQTG2 = 0.04;

  // K0 cuts
  const Float_t cutQTK0[2] = {0.1075, 0.215};
  const Float_t cutAPK0[2] = {0.199, 0.8};   // parameters for curved QT cut
  
  // Lambda & A-Lambda cuts
  const Float_t cutQTL = 0.03;
  const Float_t cutAlphaL[2] = {0.35, 0.7};
  const Float_t cutAlphaAL[2] = {-0.7,  -0.35};
  const Float_t cutAPL[3] = {0.107, -0.69, 0.5};  // parameters fir curved QT cut


  if(kPurity == fMode){
  // Check for Gamma candidates
    if(qt < cutQTG){
      if( (TMath::Abs(alpha) < cutAlphaG) ) return kGamma;
    }
    // additional region - should help high pT gammas
    if(qt < cutQTG2){
      if( (TMath::Abs(alpha) > cutAlphaG2[0]) &&  (TMath::Abs(alpha) < cutAlphaG2[1]) ) return kGamma;
    }
  }
  if(kEffGamma == fMode){
    if(qt < cutQTG) return kGamma;
  }

  
  // Check for K0 candidates
  Float_t q = cutAPK0[0] * TMath::Sqrt(TMath::Abs(1 - alpha*alpha/(cutAPK0[1]*cutAPK0[1])));
  if( (qt > cutQTK0[0]) && (qt < cutQTK0[1]) && (qt > q) ){
    return kK0;
  }

  // Check for Lambda candidates
  q = cutAPL[0] * TMath::Sqrt(TMath::Abs(1 - ( (alpha + cutAPL[1]) * (alpha + cutAPL[1]) ) / (cutAPL[2]*cutAPL[2]) ));
  if( (alpha > cutAlphaL[0]) && (alpha < cutAlphaL[1]) && (qt > cutQTL) && (qt < q)  ){
    return kLambda;
  }

  // Check for A-Lambda candidates
  q = cutAPL[0] * TMath::Sqrt(TMath::Abs(1 - ( (alpha - cutAPL[1]) * (alpha - cutAPL[1]) ) / (cutAPL[2]*cutAPL[2]) ));
  if( (alpha > cutAlphaAL[0]) && (alpha < cutAlphaAL[1]) && (qt > cutQTL) && (qt < q)  ){
    return kALambda;
  }
  
  return kUndef;
}
//____________________________________________________________________
Bool_t  AliESDv0KineCuts::SingleTrackCuts(AliESDv0 * const v0) const 
{
  //
  // apply single track cuts
  // correct sign not relevat here
  //

  if(!v0) return kFALSE;
  
  Int_t pIndex = 0, nIndex = 0;
  pIndex = v0->GetPindex();
  nIndex = v0->GetNindex();
  AliESDtrack* d[2];
  d[0] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(nIndex));
  
  for(Int_t i=0; i<2; ++i){
    if(!d[i]) return kFALSE;
    
    // status word
    ULong_t status = d[i]->GetStatus();

    // No. of TPC clusters leave to the users
    if(d[i]->GetTPCNcls() < 1) return kFALSE;

    // TPC refit
    if(!(status & AliESDtrack::kTPCrefit)) return kFALSE;
  
    // Chi2 per TPC cluster
    Int_t nTPCclusters = d[i]->GetTPCNcls();
    Float_t chi2perTPCcluster = d[i]->GetTPCchi2()/Float_t(nTPCclusters);
    if(chi2perTPCcluster > 4) return kFALSE;

    // TPC cluster ratio
    Float_t cRatioTPC = d[i]->GetTPCNclsF() > 0. ? static_cast<Float_t>(d[i]->GetTPCNcls())/static_cast<Float_t> (d[i]->GetTPCNclsF()) : 1.;
    if(cRatioTPC < 0.6) return kFALSE;
    
    // kinks
    if(d[i]->GetKinkIndex(0) != 0) return kFALSE;
    
  }

  return kTRUE;
}
//____________________________________________________________________
Bool_t AliESDv0KineCuts::CaseGamma(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const 
{
  //
  // process the gamma conversion candidate
  //

  if(!v0) return kFALSE;

  AliVTrack* daughter[2];
  Int_t pIndex = 0, nIndex = 0;

  Bool_t sign = CheckSigns(v0);
  if(sign){
    pIndex = v0->GetPindex();
    nIndex = v0->GetNindex();
  }
  else{
    pIndex = v0->GetNindex();
    nIndex = v0->GetPindex();    
  }
  daughter[0] = dynamic_cast<AliVTrack *>(fEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(fEvent->GetTrack(nIndex));
  if(!daughter[0] || !daughter[1]) return kFALSE;

  AliKFParticle *kfMother = CreateMotherParticle(daughter[0], daughter[1], TMath::Abs(kElectron), TMath::Abs(kElectron));
  if(!kfMother) return kFALSE;

  AliESDtrack* d[2];
  d[0] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(nIndex));

  Float_t iMass = v0->GetEffMass(0, 0);

  // cos pointing angle
  Double_t cosPoint = v0->GetV0CosineOfPointingAngle();
  cosPoint = TMath::ACos(cosPoint);

  // DCA between daughters
  Double_t dca = v0->GetDcaV0Daughters();

  // Production vertex
  Double_t x, y, z; 
  v0->GetXYZ(x,y,z);
  Double_t r = TMath::Sqrt(x*x + y*y);

  Double_t xy[2];
  Double_t r2 = -1.;
  if ( GetConvPosXY(d[0], d[1], xy) ){
    r2 = TMath::Sqrt(xy[0]*xy[0] + xy[1]*xy[1]);
  }

  // psi pair 
  Double_t psiPair = PsiPair(v0);
  
  // V0 chi2/ndf
  Double_t chi2ndf = kfMother->GetChi2()/kfMother->GetNDF();

  if(kfMother) delete kfMother; 
  
  // apply the cuts

  if(iMass > fGcutInvMass) return kFALSE;

  if(chi2ndf > fGcutChi2NDF) return kFALSE;

  if(cosPoint < fGcutCosPoint[0] || cosPoint > fGcutCosPoint[1]) return kFALSE;

  if(dca < fGcutDCA[0] || dca > fGcutDCA[1]) return kFALSE;

  if(r < fGcutVertexR[0] || r > fGcutVertexR[1]) return kFALSE;

  if(psiPair < fGcutPsiPair[0] || psiPair > fGcutPsiPair[1]) return kFALSE;
  
  // all cuts passed

  pdgV0 = 22;
  if(sign){
    pdgP = -11;
    pdgN = 11;
  }
  else{
    pdgP = 11;
    pdgN = -11;
  }

  return kTRUE;
}
//____________________________________________________________________
Bool_t  AliESDv0KineCuts::CaseK0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const {
  //
  // process the K0 candidate
  //

  if(!v0) return kFALSE;
  
  AliVTrack* daughter[2];
  Int_t pIndex = 0, nIndex = 0;
  Bool_t sign = CheckSigns(v0);
  if(sign){
    pIndex = v0->GetPindex();
    nIndex = v0->GetNindex();
  }
  else{
    pIndex = v0->GetNindex();
    nIndex = v0->GetPindex();    
  }
 
  daughter[0] = dynamic_cast<AliVTrack *>(fEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(fEvent->GetTrack(nIndex));
  if(!daughter[0] || !daughter[1]) return kFALSE;

  AliKFParticle *kfMother = CreateMotherParticle(daughter[0], daughter[1], TMath::Abs(kPiPlus), TMath::Abs(kPiPlus));
  if(!kfMother) return kFALSE;

  AliESDtrack* d[2];
  d[0] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(nIndex));

  Float_t iMass = v0->GetEffMass(2, 2);

  // cos pointing angle
  Double_t cosPoint = v0->GetV0CosineOfPointingAngle();
  cosPoint = TMath::ACos(cosPoint);

  // DCA between daughters
  Double_t dca = v0->GetDcaV0Daughters();

  // Production vertex
  Double_t x, y, z; 
  v0->GetXYZ(x,y,z);

  Double_t r = TMath::Sqrt(x*x + y*y);  

  // V0 chi2/ndf
  Double_t chi2ndf = kfMother->GetChi2()/kfMother->GetNDF();
  
  if(kfMother) delete kfMother; 

  //
  // apply the cuts
  //
  if(iMass < fK0cutInvMass[0] || iMass > fK0cutInvMass[1]) return kFALSE;

  if(chi2ndf > fK0cutChi2NDF) return kFALSE;

  if(cosPoint < fK0cutCosPoint[0] || cosPoint > fK0cutCosPoint[1]) return kFALSE;

  if(dca < fK0cutDCA[0] || dca > fK0cutDCA[1]) return kFALSE;

  if(r < fK0cutVertexR[0] || r > fK0cutVertexR[1]) return kFALSE;

  // all cuts passed
  pdgV0 = 310;
  if(sign){
    pdgP = 211;
    pdgN = -211;
  }
  else{
    pdgP = -211;
    pdgN = 211;
  }

  return kTRUE;
}
//____________________________________________________________________
Bool_t  AliESDv0KineCuts::CaseLambda(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN, Int_t id) const {
  //
  // process teh Lambda and Anti-Lambda candidate
  //
  
  if(!v0) return kFALSE;

    const Double_t cL0mass=TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();  // PDG lambda mass

  AliVTrack* daughter[2];
  Int_t pIndex = 0, nIndex = 0;
  Float_t mMass[2] = {-1., -1.};
  Bool_t sign = CheckSigns(v0);
  if(sign){
    pIndex = v0->GetPindex();
    nIndex = v0->GetNindex();
    mMass[0] = v0->GetEffMass(4, 2);
    mMass[1] = v0->GetEffMass(2, 4);
  }
  else{
    pIndex = v0->GetNindex();
    nIndex = v0->GetPindex();    
    mMass[0] = v0->GetEffMass(2, 4);
    mMass[1] = v0->GetEffMass(4, 2);
  }
 
  daughter[0] = dynamic_cast<AliVTrack *>(fEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(fEvent->GetTrack(nIndex));
  if(!daughter[0] || !daughter[1]) return kFALSE;

  AliKFParticle *kfMother[2] = {0x0, 0x0};
  // Lambda
  kfMother[0] = CreateMotherParticle(daughter[0], daughter[1], TMath::Abs(kProton), TMath::Abs(kPiPlus));
  if(!kfMother[0]) return kFALSE;
  
  // Anti-Lambda
  kfMother[1] = CreateMotherParticle(daughter[0], daughter[1], TMath::Abs(kPiPlus), TMath::Abs(kProton));
  if(!kfMother[1]) return kFALSE;

  Float_t dMass[2] = {static_cast<Float_t>(TMath::Abs(mMass[0] - cL0mass)), static_cast<Float_t>(TMath::Abs(mMass[1] - cL0mass))};
  
  AliESDtrack* d[2];
  d[0] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(nIndex));
  if(!d[0] || !d[1])    return kFALSE;
  
  Float_t p[2] = {static_cast<Float_t>(d[0]->GetP()), static_cast<Float_t>(d[1]->GetP())}; 

  // check the 3 lambda - antilambda variables
  Int_t check[2] = {-1, -1};   // 0 : lambda, 1 : antilambda
  // 1) momentum of the daughter particles - proton is expected to have higher momentum than pion
  check[0] = (p[0] > p[1]) ? 0 : 1;
  // 2) mass of the mother particle
  check[1] = (dMass[0] < dMass[1]) ? 0 : 1;
 
  // require positive correlation of (1) and (2)
  if(check[0] != check[1]){
    if(kfMother[0]) delete kfMother[0]; 
    if(kfMother[1]) delete kfMother[1]; 
    return kFALSE;
  }

  // now that the check[0] == check[1]
  const Int_t type = check[0];

  // require that the input armenteros preselection agree:
  if(type != id) return kFALSE;

  Float_t iMass =0.;
  if(sign){
    iMass = (type == 0) ? v0->GetEffMass(4, 2) : v0->GetEffMass(2, 4);
  }
  else{
    iMass = (type == 0) ? v0->GetEffMass(2, 4) : v0->GetEffMass(4, 2);
  }

  // cos pointing angle
  Double_t cosPoint = v0->GetV0CosineOfPointingAngle();
  cosPoint = TMath::ACos(cosPoint);

  // DCA between daughters
  Double_t dca = v0->GetDcaV0Daughters();
  
  // Production vertex
  Double_t x, y, z; 
  v0->GetXYZ(x,y,z);
  Double_t r = TMath::Sqrt(x*x + y*y);

  // proton - pion indices
  Int_t ix[2] = {0, 1};
  if(1 == type){
    ix[0] = 1;
    ix[1] = 0;
  }

  // V0 chi2/ndf
  Double_t chi2ndf = kfMother[type]->GetChi2()/kfMother[type]->GetNDF();

  if(kfMother[0]) delete kfMother[0]; 
  if(kfMother[1]) delete kfMother[1]; 

  //
  // apply the cuts
  //

  if(iMass < fLcutInvMass[0] || iMass > fLcutInvMass[1]) return kFALSE;

  if(chi2ndf > fLcutChi2NDF) return kFALSE;

  if(cosPoint < fLcutCosPoint[0] || cosPoint > fLcutCosPoint[1]) return kFALSE;

  if(dca < fLcutDCA[0] || dca > fLcutDCA[1]) return kFALSE;

  if(r < fLcutVertexR[0] || r > fLcutVertexR[1]) return kFALSE;

  // all cuts passed

  if(0 == type){
    pdgV0 = 3122;
    if(sign){
      pdgP = 2212;
      pdgN = -211;
    }
    else{
      pdgP = -211;
      pdgN = 2212;
    }
  }
  else{
    pdgV0 = -3122;
    if(sign){
      pdgP = 211;
      pdgN = -2212;
    }
    else{
      pdgP = -2212;
      pdgN = 211;
    }
  }

  return kTRUE;
}
//____________________________________________________________________
Bool_t  AliESDv0KineCuts::V0CutsCommon(const AliESDv0 * const v0) const 
{
  //
  // V0 cuts common to all V0s
  //

  AliESDtrack* dN, *dP; 
 
  dP = dynamic_cast<AliESDtrack *>(fEvent->GetTrack(v0->GetPindex()));
  dN = dynamic_cast<AliESDtrack *>(fEvent->GetTrack(v0->GetNindex())); 
  
  if(!dN || !dP) return kFALSE;

  Int_t qP = dP->Charge();
  Int_t qN = dN->Charge();

  if((qP*qN) != -1) return kFALSE;

  return kTRUE;
}
//____________________________________________________________________
void AliESDv0KineCuts::Armenteros(AliESDv0* const v0, Float_t val[2]) const 
{
  //
  // computes the Armenteros variables for given V0
  // fills the histogram
  // returns the values via "val"
  //
  
  Double_t mn[3] = {0,0,0};
  Double_t mp[3] = {0,0,0};  
  Double_t mm[3] = {0,0,0};  

  if(CheckSigns(v0)){
    v0->GetNPxPyPz(mn[0],mn[1],mn[2]); //reconstructed cartesian momentum components of negative daughter
    v0->GetPPxPyPz(mp[0],mp[1],mp[2]); //reconstructed cartesian momentum components of positive daughter
  }
  else{
    v0->GetPPxPyPz(mn[0],mn[1],mn[2]); //reconstructed cartesian momentum components of negative daughter
    v0->GetNPxPyPz(mp[0],mp[1],mp[2]); //reconstructed cartesian momentum components of positive daughter
  }
  v0->GetPxPyPz(mm[0],mm[1],mm[2]); //reconstructed cartesian momentum components of mother

  TVector3 vecN(mn[0],mn[1],mn[2]);
  TVector3 vecP(mp[0],mp[1],mp[2]);
  TVector3 vecM(mm[0],mm[1],mm[2]);
  
  Double_t thetaP = acos((vecP * vecM)/(vecP.Mag() * vecM.Mag()));
  Double_t thetaN = acos((vecN * vecM)/(vecN.Mag() * vecM.Mag()));
  
  Double_t alfa = ((vecP.Mag())*cos(thetaP)-(vecN.Mag())*cos(thetaN))/
    ((vecP.Mag())*cos(thetaP)+(vecN.Mag())*cos(thetaN)) ;
  Double_t qt = vecP.Mag()*sin(thetaP);

  val[0] = alfa;
  val[1] = qt;
}
//____________________________________________________________________
Bool_t AliESDv0KineCuts::CheckSigns(AliESDv0* const v0) const 
{
  //
  // check wheter the sign was correctly applied to 
  // V0 daughter tracks
  //
  
  Bool_t correct = kFALSE;

  Int_t pIndex = 0, nIndex = 0;
  pIndex = v0->GetPindex();
  nIndex = v0->GetNindex();
  
  AliESDtrack* d[2];
  d[0] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fEvent->GetTrack(nIndex));

  Int_t sign[2];
  sign[0] = (int)d[0]->GetSign();
  sign[1] = (int)d[1]->GetSign();
  
  if(-1 == sign[0] && 1 == sign[1]){
    correct = kFALSE;
  }
  else{
    correct = kTRUE;
  }
  
  return correct;
}
//________________________________________________________________
Double_t AliESDv0KineCuts::PsiPair(AliESDv0* const v0) const 
{
  //
  // Angle between daughter momentum plane and plane 
  // 

  if(!fEvent) return -1.;

  Float_t magField = fEvent->GetMagneticField();

  Int_t pIndex = -1;
  Int_t nIndex = -1;
  if(CheckSigns(v0)){
    pIndex = v0->GetPindex();
    nIndex = v0->GetNindex();
  }
  else{
    pIndex = v0->GetNindex();
    nIndex = v0->GetPindex();    
  }
 

  AliESDtrack* daughter[2];

  daughter[0] = dynamic_cast<AliESDtrack *>(fEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliESDtrack *>(fEvent->GetTrack(nIndex));

  Double_t x, y, z;
  v0->GetXYZ(x,y,z);//Reconstructed coordinates of V0; to be replaced by Markus Rammler's method in case of conversions!
  
  Double_t mn[3] = {0,0,0};
  Double_t mp[3] = {0,0,0};
  

  v0->GetNPxPyPz(mn[0],mn[1],mn[2]);//reconstructed cartesian momentum components of negative daughter;
  v0->GetPPxPyPz(mp[0],mp[1],mp[2]);//reconstructed cartesian momentum components of positive daughter; 


  Double_t deltat = 1.;
  deltat = TMath::ATan(mp[2]/(TMath::Sqrt(mp[0]*mp[0] + mp[1]*mp[1])+1.e-13)) -  TMath::ATan(mn[2]/(TMath::Sqrt(mn[0]*mn[0] + mn[1]*mn[1])+1.e-13));//difference of angles of the two daughter tracks with z-axis

  Double_t radiussum = TMath::Sqrt(x*x + y*y) + 50;//radius to which tracks shall be propagated

  Double_t momPosProp[3];
  Double_t momNegProp[3];
    
  AliExternalTrackParam pt(*daughter[0]), nt(*daughter[1]);
    
  Double_t psiPair = 4.;

  if(nt.PropagateTo(radiussum,magField) == 0)//propagate tracks to the outside
    psiPair =  -5.;
  if(pt.PropagateTo(radiussum,magField) == 0)
    psiPair = -5.;
  pt.GetPxPyPz(momPosProp);//Get momentum vectors of tracks after propagation
  nt.GetPxPyPz(momNegProp);
  
  Double_t pEle =
    TMath::Sqrt(momNegProp[0]*momNegProp[0]+momNegProp[1]*momNegProp[1]+momNegProp[2]*momNegProp[2]);//absolute momentum value of negative daughter
  Double_t pPos =
    TMath::Sqrt(momPosProp[0]*momPosProp[0]+momPosProp[1]*momPosProp[1]+momPosProp[2]*momPosProp[2]);//absolute momentum value of positive daughter
    
  Double_t scalarproduct =
    momPosProp[0]*momNegProp[0]+momPosProp[1]*momNegProp[1]+momPosProp[2]*momNegProp[2];//scalar product of propagated positive and negative daughters' momenta
    
  Double_t chipair = TMath::ACos(scalarproduct/(pEle*pPos));//Angle between propagated daughter tracks

  psiPair =  TMath::Abs(TMath::ASin(deltat/chipair));  

  return psiPair; 
}
//___________________________________________________________________
Bool_t  AliESDv0KineCuts::GetConvPosXY(AliESDtrack * const ptrack, AliESDtrack * const ntrack, Double_t convpos[2]) const
{
  //
  // recalculate the gamma conversion XY postition
  //

  const Double_t b = fEvent->GetMagneticField();

  Double_t helixcenterpos[2];
  GetHelixCenter(ptrack,b,ptrack->Charge(),helixcenterpos);

  Double_t helixcenterneg[2];
  GetHelixCenter(ntrack,b,ntrack->Charge(),helixcenterneg);

  Double_t  poshelix[6];
  ptrack->GetHelixParameters(poshelix,b);
  Double_t posradius = TMath::Abs(1./poshelix[4]);

  Double_t  neghelix[6];
  ntrack->GetHelixParameters(neghelix,b);
  Double_t negradius = TMath::Abs(1./neghelix[4]);

  Double_t xpos = helixcenterpos[0];
  Double_t ypos = helixcenterpos[1];
  Double_t xneg = helixcenterneg[0];
  Double_t yneg = helixcenterneg[1];

  convpos[0] = (xpos*negradius + xneg*posradius)/(negradius+posradius);
  convpos[1] = (ypos*negradius+  yneg*posradius)/(negradius+posradius);

  return 1;
}
//___________________________________________________________________
Bool_t  AliESDv0KineCuts::GetHelixCenter(AliESDtrack * const track, Double_t b,Int_t charge, Double_t center[2]) const
{
  //
  // computes the center of the track helix
  //
  
  Double_t pi = TMath::Pi();
  
  Double_t  helix[6];
  track->GetHelixParameters(helix,b);
  
  Double_t xpos =  helix[5];
  Double_t ypos =  helix[0];
  Double_t radius = TMath::Abs(1./helix[4]);
  Double_t phi = helix[2];

  if(phi < 0){
    phi = phi + 2*pi;
  }

  phi -= pi/2.;
  Double_t xpoint =  radius * TMath::Cos(phi);
  Double_t ypoint =  radius * TMath::Sin(phi);

  if(b<0){
    if(charge > 0){
      xpoint = - xpoint;
      ypoint = - ypoint;
    }
    /* avoid self assignment
    if(charge < 0){
      xpoint =  xpoint;
      ypoint =  ypoint;
    }
    */
  }
  if(b>0){
    /* avoid self assignment
    if(charge > 0){
      xpoint =  xpoint;
      ypoint =  ypoint;
    }
    */
    if(charge < 0){
      xpoint = - xpoint;
      ypoint = - ypoint;
    }
  }
  center[0] =  xpos + xpoint;
  center[1] =  ypos + ypoint;

  return 1;
}
//___________________________________________________________________
AliKFParticle *AliESDv0KineCuts::CreateMotherParticle(const AliVTrack* const pdaughter, const AliVTrack* const ndaughter, Int_t pspec, Int_t nspec) const
{
  //
  // Creates a mother particle
  //
  AliKFParticle pkfdaughter(*pdaughter, pspec);
  AliKFParticle nkfdaughter(*ndaughter, nspec);
  
  
  // Create the mother particle 
  AliKFParticle *m = new AliKFParticle(pkfdaughter, nkfdaughter);
  m->SetField(fEvent->GetMagneticField());
  if(TMath::Abs(kElectron) == pspec && TMath::Abs(kElectron) == nspec) m->SetMassConstraint(0, 0.001);
  else if(TMath::Abs(kPiPlus) == pspec && TMath::Abs(kPiPlus) == nspec) m->SetMassConstraint(TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass(), 0.);
  else if(TMath::Abs(kProton) == pspec && TMath::Abs(kPiPlus) == nspec) m->SetMassConstraint(TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass(), 0.);
  else if(TMath::Abs(kPiPlus) == pspec && TMath::Abs(kProton) == nspec) m->SetMassConstraint(TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass(), 0.);
  else{
    AliErrorClass("Wrong daughter ID - mass constraint can not be set");
  }

  AliKFVertex improvedVertex = *fPrimaryVertex;
  improvedVertex += *m;
  m->SetProductionVertex(improvedVertex);
  
  // update 15/06/2010
  // mother particle will not be added to primary vertex but only to its copy 
  // as this confilcts with calling
  // m->SetPrimaryVertex() function and
  // subsequently removing the mother particle afterwards
  // Source: Sergey Gorbunov

  return m;
}
//____________________________________________________________________
void  AliESDv0KineCuts::SetEvent(AliESDEvent* const event){
  //
  // direct setter of ESD event
  //
  fEvent = event;
  if(!fEvent){
    AliErrorClass("Invalid input event pointer");
    return;
  }
if (fUseExternalVertex) return;
else{
	if(fPrimaryVertex && fDeleteVertex){
		delete 	fPrimaryVertex;
		fPrimaryVertex=0x0;
		}
	fPrimaryVertex = new AliKFVertex(*(fEvent->GetPrimaryVertex()));
	fDeleteVertex=kTRUE;
	}



}
//____________________________________________________________________
void  AliESDv0KineCuts::SetEvent(AliVEvent* const event){
  //
  // direct setter of ESD event
  //

  fEvent = dynamic_cast<AliESDEvent*>(event);
  if(!fEvent){
    AliErrorClass("Invalid input event pointer");
    return;
  }
  
  if (fUseExternalVertex) return;
  else{
    if(fPrimaryVertex && fDeleteVertex){
      delete 	fPrimaryVertex;
      fPrimaryVertex=0x0;
      }
    fPrimaryVertex = new AliKFVertex(*(fEvent->GetPrimaryVertex()));
    fDeleteVertex=kTRUE;
  }
}


//________________________________________________________________
void	 AliESDv0KineCuts::UseExternalVertex(Bool_t use_external){
	//
	// Reenable primary Vertex from ESD event
	//
	if (use_external) fUseExternalVertex =kTRUE;
	else fUseExternalVertex =kFALSE;
}




//________________________________________________________________
void AliESDv0KineCuts::SetPrimaryVertex(AliKFVertex* const v){
  //
  // set the primary vertex of the event
  //
  	if(fPrimaryVertex && fDeleteVertex){   
		delete 	fPrimaryVertex;
		fPrimaryVertex =0x0;
		fDeleteVertex = kFALSE;
		}  
  fUseExternalVertex=kTRUE; 
  fPrimaryVertex = v; // set primary Vertex
  if(!fPrimaryVertex){
    AliErrorClass("Failed to initialize the primary vertex");
    return;
  }
}
//___________________________________________________________________
void AliESDv0KineCuts::SetMode(Int_t mode, Int_t type){
  //
  // this function allows the user to select (prior running the 'ProcessV0' function)
  // to select different approaches to V0 selection - the 'mode'
  // - and -
  // different systems (pp, PbPb) - 'type' 
  //
  // To see the cut values for different modes please refer to the
  // function SetCuts()
  //
  // Important notice: based on the parameters particular sets of cuts will
  // be activated for teh V0 selection. If some additional changes to single
  // cuts are needed please us the SetXXXcut function (see the header file)
  // 

  switch(mode){
  case kPurity:
    fMode = kPurity;  // used to obtain highest purity possible - the efficiency may be low
    break;
  case kEffGamma:
    fMode = kEffGamma; // used to obtain highes efficiency possible - the purity may be worse
    break;
  default:
    AliError("V0 selection mode not recognozed, setting 'kPurity'");
    fMode = kPurity;
  }

  switch(type){
  case kPP:
    fType = kPP;  // cuts optimized for low multiplicity 
    break;
  case kPbPb:
    fType = kPbPb;  // cuts optimized for high multiplicity
    break;
  }
  
  // setup the cut values for selected mode & type
  SetCuts();

}
//___________________________________________________________________
void AliESDv0KineCuts::SetMode(Int_t mode, const char* type){
  //
  // overloaded function - please see above
  // 
  
  Int_t t = -1;

  if(!strcmp("pp", type)) t = kPP;
  else if(!(strcmp("PbPb", type))) t = kPbPb;
  else{
    AliError("data type not recognized, setting 'pp'");
    t = kPP;    
  }

  SetMode(mode, t);

}
//___________________________________________________________________
void AliESDv0KineCuts::SetCuts(){
  //
  // this funciton sets the default cut values based on the selected
  // fMode and fType.
  // please note that only the cuts that have different values than the default
  // cuts are updated here
  //
  
  // last update: 14/02/2011
  // as a very preliminary  - the only change to default cuts is to apply
  // less restricting gamma conversion selection in PreselectV0() function
  

  
}
 AliESDv0KineCuts.cxx:1
 AliESDv0KineCuts.cxx:2
 AliESDv0KineCuts.cxx:3
 AliESDv0KineCuts.cxx:4
 AliESDv0KineCuts.cxx:5
 AliESDv0KineCuts.cxx:6
 AliESDv0KineCuts.cxx:7
 AliESDv0KineCuts.cxx:8
 AliESDv0KineCuts.cxx:9
 AliESDv0KineCuts.cxx:10
 AliESDv0KineCuts.cxx:11
 AliESDv0KineCuts.cxx:12
 AliESDv0KineCuts.cxx:13
 AliESDv0KineCuts.cxx:14
 AliESDv0KineCuts.cxx:15
 AliESDv0KineCuts.cxx:16
 AliESDv0KineCuts.cxx:17
 AliESDv0KineCuts.cxx:18
 AliESDv0KineCuts.cxx:19
 AliESDv0KineCuts.cxx:20
 AliESDv0KineCuts.cxx:21
 AliESDv0KineCuts.cxx:22
 AliESDv0KineCuts.cxx:23
 AliESDv0KineCuts.cxx:24
 AliESDv0KineCuts.cxx:25
 AliESDv0KineCuts.cxx:26
 AliESDv0KineCuts.cxx:27
 AliESDv0KineCuts.cxx:28
 AliESDv0KineCuts.cxx:29
 AliESDv0KineCuts.cxx:30
 AliESDv0KineCuts.cxx:31
 AliESDv0KineCuts.cxx:32
 AliESDv0KineCuts.cxx:33
 AliESDv0KineCuts.cxx:34
 AliESDv0KineCuts.cxx:35
 AliESDv0KineCuts.cxx:36
 AliESDv0KineCuts.cxx:37
 AliESDv0KineCuts.cxx:38
 AliESDv0KineCuts.cxx:39
 AliESDv0KineCuts.cxx:40
 AliESDv0KineCuts.cxx:41
 AliESDv0KineCuts.cxx:42
 AliESDv0KineCuts.cxx:43
 AliESDv0KineCuts.cxx:44
 AliESDv0KineCuts.cxx:45
 AliESDv0KineCuts.cxx:46
 AliESDv0KineCuts.cxx:47
 AliESDv0KineCuts.cxx:48
 AliESDv0KineCuts.cxx:49
 AliESDv0KineCuts.cxx:50
 AliESDv0KineCuts.cxx:51
 AliESDv0KineCuts.cxx:52
 AliESDv0KineCuts.cxx:53
 AliESDv0KineCuts.cxx:54
 AliESDv0KineCuts.cxx:55
 AliESDv0KineCuts.cxx:56
 AliESDv0KineCuts.cxx:57
 AliESDv0KineCuts.cxx:58
 AliESDv0KineCuts.cxx:59
 AliESDv0KineCuts.cxx:60
 AliESDv0KineCuts.cxx:61
 AliESDv0KineCuts.cxx:62
 AliESDv0KineCuts.cxx:63
 AliESDv0KineCuts.cxx:64
 AliESDv0KineCuts.cxx:65
 AliESDv0KineCuts.cxx:66
 AliESDv0KineCuts.cxx:67
 AliESDv0KineCuts.cxx:68
 AliESDv0KineCuts.cxx:69
 AliESDv0KineCuts.cxx:70
 AliESDv0KineCuts.cxx:71
 AliESDv0KineCuts.cxx:72
 AliESDv0KineCuts.cxx:73
 AliESDv0KineCuts.cxx:74
 AliESDv0KineCuts.cxx:75
 AliESDv0KineCuts.cxx:76
 AliESDv0KineCuts.cxx:77
 AliESDv0KineCuts.cxx:78
 AliESDv0KineCuts.cxx:79
 AliESDv0KineCuts.cxx:80
 AliESDv0KineCuts.cxx:81
 AliESDv0KineCuts.cxx:82
 AliESDv0KineCuts.cxx:83
 AliESDv0KineCuts.cxx:84
 AliESDv0KineCuts.cxx:85
 AliESDv0KineCuts.cxx:86
 AliESDv0KineCuts.cxx:87
 AliESDv0KineCuts.cxx:88
 AliESDv0KineCuts.cxx:89
 AliESDv0KineCuts.cxx:90
 AliESDv0KineCuts.cxx:91
 AliESDv0KineCuts.cxx:92
 AliESDv0KineCuts.cxx:93
 AliESDv0KineCuts.cxx:94
 AliESDv0KineCuts.cxx:95
 AliESDv0KineCuts.cxx:96
 AliESDv0KineCuts.cxx:97
 AliESDv0KineCuts.cxx:98
 AliESDv0KineCuts.cxx:99
 AliESDv0KineCuts.cxx:100
 AliESDv0KineCuts.cxx:101
 AliESDv0KineCuts.cxx:102
 AliESDv0KineCuts.cxx:103
 AliESDv0KineCuts.cxx:104
 AliESDv0KineCuts.cxx:105
 AliESDv0KineCuts.cxx:106
 AliESDv0KineCuts.cxx:107
 AliESDv0KineCuts.cxx:108
 AliESDv0KineCuts.cxx:109
 AliESDv0KineCuts.cxx:110
 AliESDv0KineCuts.cxx:111
 AliESDv0KineCuts.cxx:112
 AliESDv0KineCuts.cxx:113
 AliESDv0KineCuts.cxx:114
 AliESDv0KineCuts.cxx:115
 AliESDv0KineCuts.cxx:116
 AliESDv0KineCuts.cxx:117
 AliESDv0KineCuts.cxx:118
 AliESDv0KineCuts.cxx:119
 AliESDv0KineCuts.cxx:120
 AliESDv0KineCuts.cxx:121
 AliESDv0KineCuts.cxx:122
 AliESDv0KineCuts.cxx:123
 AliESDv0KineCuts.cxx:124
 AliESDv0KineCuts.cxx:125
 AliESDv0KineCuts.cxx:126
 AliESDv0KineCuts.cxx:127
 AliESDv0KineCuts.cxx:128
 AliESDv0KineCuts.cxx:129
 AliESDv0KineCuts.cxx:130
 AliESDv0KineCuts.cxx:131
 AliESDv0KineCuts.cxx:132
 AliESDv0KineCuts.cxx:133
 AliESDv0KineCuts.cxx:134
 AliESDv0KineCuts.cxx:135
 AliESDv0KineCuts.cxx:136
 AliESDv0KineCuts.cxx:137
 AliESDv0KineCuts.cxx:138
 AliESDv0KineCuts.cxx:139
 AliESDv0KineCuts.cxx:140
 AliESDv0KineCuts.cxx:141
 AliESDv0KineCuts.cxx:142
 AliESDv0KineCuts.cxx:143
 AliESDv0KineCuts.cxx:144
 AliESDv0KineCuts.cxx:145
 AliESDv0KineCuts.cxx:146
 AliESDv0KineCuts.cxx:147
 AliESDv0KineCuts.cxx:148
 AliESDv0KineCuts.cxx:149
 AliESDv0KineCuts.cxx:150
 AliESDv0KineCuts.cxx:151
 AliESDv0KineCuts.cxx:152
 AliESDv0KineCuts.cxx:153
 AliESDv0KineCuts.cxx:154
 AliESDv0KineCuts.cxx:155
 AliESDv0KineCuts.cxx:156
 AliESDv0KineCuts.cxx:157
 AliESDv0KineCuts.cxx:158
 AliESDv0KineCuts.cxx:159
 AliESDv0KineCuts.cxx:160
 AliESDv0KineCuts.cxx:161
 AliESDv0KineCuts.cxx:162
 AliESDv0KineCuts.cxx:163
 AliESDv0KineCuts.cxx:164
 AliESDv0KineCuts.cxx:165
 AliESDv0KineCuts.cxx:166
 AliESDv0KineCuts.cxx:167
 AliESDv0KineCuts.cxx:168
 AliESDv0KineCuts.cxx:169
 AliESDv0KineCuts.cxx:170
 AliESDv0KineCuts.cxx:171
 AliESDv0KineCuts.cxx:172
 AliESDv0KineCuts.cxx:173
 AliESDv0KineCuts.cxx:174
 AliESDv0KineCuts.cxx:175
 AliESDv0KineCuts.cxx:176
 AliESDv0KineCuts.cxx:177
 AliESDv0KineCuts.cxx:178
 AliESDv0KineCuts.cxx:179
 AliESDv0KineCuts.cxx:180
 AliESDv0KineCuts.cxx:181
 AliESDv0KineCuts.cxx:182
 AliESDv0KineCuts.cxx:183
 AliESDv0KineCuts.cxx:184
 AliESDv0KineCuts.cxx:185
 AliESDv0KineCuts.cxx:186
 AliESDv0KineCuts.cxx:187
 AliESDv0KineCuts.cxx:188
 AliESDv0KineCuts.cxx:189
 AliESDv0KineCuts.cxx:190
 AliESDv0KineCuts.cxx:191
 AliESDv0KineCuts.cxx:192
 AliESDv0KineCuts.cxx:193
 AliESDv0KineCuts.cxx:194
 AliESDv0KineCuts.cxx:195
 AliESDv0KineCuts.cxx:196
 AliESDv0KineCuts.cxx:197
 AliESDv0KineCuts.cxx:198
 AliESDv0KineCuts.cxx:199
 AliESDv0KineCuts.cxx:200
 AliESDv0KineCuts.cxx:201
 AliESDv0KineCuts.cxx:202
 AliESDv0KineCuts.cxx:203
 AliESDv0KineCuts.cxx:204
 AliESDv0KineCuts.cxx:205
 AliESDv0KineCuts.cxx:206
 AliESDv0KineCuts.cxx:207
 AliESDv0KineCuts.cxx:208
 AliESDv0KineCuts.cxx:209
 AliESDv0KineCuts.cxx:210
 AliESDv0KineCuts.cxx:211
 AliESDv0KineCuts.cxx:212
 AliESDv0KineCuts.cxx:213
 AliESDv0KineCuts.cxx:214
 AliESDv0KineCuts.cxx:215
 AliESDv0KineCuts.cxx:216
 AliESDv0KineCuts.cxx:217
 AliESDv0KineCuts.cxx:218
 AliESDv0KineCuts.cxx:219
 AliESDv0KineCuts.cxx:220
 AliESDv0KineCuts.cxx:221
 AliESDv0KineCuts.cxx:222
 AliESDv0KineCuts.cxx:223
 AliESDv0KineCuts.cxx:224
 AliESDv0KineCuts.cxx:225
 AliESDv0KineCuts.cxx:226
 AliESDv0KineCuts.cxx:227
 AliESDv0KineCuts.cxx:228
 AliESDv0KineCuts.cxx:229
 AliESDv0KineCuts.cxx:230
 AliESDv0KineCuts.cxx:231
 AliESDv0KineCuts.cxx:232
 AliESDv0KineCuts.cxx:233
 AliESDv0KineCuts.cxx:234
 AliESDv0KineCuts.cxx:235
 AliESDv0KineCuts.cxx:236
 AliESDv0KineCuts.cxx:237
 AliESDv0KineCuts.cxx:238
 AliESDv0KineCuts.cxx:239
 AliESDv0KineCuts.cxx:240
 AliESDv0KineCuts.cxx:241
 AliESDv0KineCuts.cxx:242
 AliESDv0KineCuts.cxx:243
 AliESDv0KineCuts.cxx:244
 AliESDv0KineCuts.cxx:245
 AliESDv0KineCuts.cxx:246
 AliESDv0KineCuts.cxx:247
 AliESDv0KineCuts.cxx:248
 AliESDv0KineCuts.cxx:249
 AliESDv0KineCuts.cxx:250
 AliESDv0KineCuts.cxx:251
 AliESDv0KineCuts.cxx:252
 AliESDv0KineCuts.cxx:253
 AliESDv0KineCuts.cxx:254
 AliESDv0KineCuts.cxx:255
 AliESDv0KineCuts.cxx:256
 AliESDv0KineCuts.cxx:257
 AliESDv0KineCuts.cxx:258
 AliESDv0KineCuts.cxx:259
 AliESDv0KineCuts.cxx:260
 AliESDv0KineCuts.cxx:261
 AliESDv0KineCuts.cxx:262
 AliESDv0KineCuts.cxx:263
 AliESDv0KineCuts.cxx:264
 AliESDv0KineCuts.cxx:265
 AliESDv0KineCuts.cxx:266
 AliESDv0KineCuts.cxx:267
 AliESDv0KineCuts.cxx:268
 AliESDv0KineCuts.cxx:269
 AliESDv0KineCuts.cxx:270
 AliESDv0KineCuts.cxx:271
 AliESDv0KineCuts.cxx:272
 AliESDv0KineCuts.cxx:273
 AliESDv0KineCuts.cxx:274
 AliESDv0KineCuts.cxx:275
 AliESDv0KineCuts.cxx:276
 AliESDv0KineCuts.cxx:277
 AliESDv0KineCuts.cxx:278
 AliESDv0KineCuts.cxx:279
 AliESDv0KineCuts.cxx:280
 AliESDv0KineCuts.cxx:281
 AliESDv0KineCuts.cxx:282
 AliESDv0KineCuts.cxx:283
 AliESDv0KineCuts.cxx:284
 AliESDv0KineCuts.cxx:285
 AliESDv0KineCuts.cxx:286
 AliESDv0KineCuts.cxx:287
 AliESDv0KineCuts.cxx:288
 AliESDv0KineCuts.cxx:289
 AliESDv0KineCuts.cxx:290
 AliESDv0KineCuts.cxx:291
 AliESDv0KineCuts.cxx:292
 AliESDv0KineCuts.cxx:293
 AliESDv0KineCuts.cxx:294
 AliESDv0KineCuts.cxx:295
 AliESDv0KineCuts.cxx:296
 AliESDv0KineCuts.cxx:297
 AliESDv0KineCuts.cxx:298
 AliESDv0KineCuts.cxx:299
 AliESDv0KineCuts.cxx:300
 AliESDv0KineCuts.cxx:301
 AliESDv0KineCuts.cxx:302
 AliESDv0KineCuts.cxx:303
 AliESDv0KineCuts.cxx:304
 AliESDv0KineCuts.cxx:305
 AliESDv0KineCuts.cxx:306
 AliESDv0KineCuts.cxx:307
 AliESDv0KineCuts.cxx:308
 AliESDv0KineCuts.cxx:309
 AliESDv0KineCuts.cxx:310
 AliESDv0KineCuts.cxx:311
 AliESDv0KineCuts.cxx:312
 AliESDv0KineCuts.cxx:313
 AliESDv0KineCuts.cxx:314
 AliESDv0KineCuts.cxx:315
 AliESDv0KineCuts.cxx:316
 AliESDv0KineCuts.cxx:317
 AliESDv0KineCuts.cxx:318
 AliESDv0KineCuts.cxx:319
 AliESDv0KineCuts.cxx:320
 AliESDv0KineCuts.cxx:321
 AliESDv0KineCuts.cxx:322
 AliESDv0KineCuts.cxx:323
 AliESDv0KineCuts.cxx:324
 AliESDv0KineCuts.cxx:325
 AliESDv0KineCuts.cxx:326
 AliESDv0KineCuts.cxx:327
 AliESDv0KineCuts.cxx:328
 AliESDv0KineCuts.cxx:329
 AliESDv0KineCuts.cxx:330
 AliESDv0KineCuts.cxx:331
 AliESDv0KineCuts.cxx:332
 AliESDv0KineCuts.cxx:333
 AliESDv0KineCuts.cxx:334
 AliESDv0KineCuts.cxx:335
 AliESDv0KineCuts.cxx:336
 AliESDv0KineCuts.cxx:337
 AliESDv0KineCuts.cxx:338
 AliESDv0KineCuts.cxx:339
 AliESDv0KineCuts.cxx:340
 AliESDv0KineCuts.cxx:341
 AliESDv0KineCuts.cxx:342
 AliESDv0KineCuts.cxx:343
 AliESDv0KineCuts.cxx:344
 AliESDv0KineCuts.cxx:345
 AliESDv0KineCuts.cxx:346
 AliESDv0KineCuts.cxx:347
 AliESDv0KineCuts.cxx:348
 AliESDv0KineCuts.cxx:349
 AliESDv0KineCuts.cxx:350
 AliESDv0KineCuts.cxx:351
 AliESDv0KineCuts.cxx:352
 AliESDv0KineCuts.cxx:353
 AliESDv0KineCuts.cxx:354
 AliESDv0KineCuts.cxx:355
 AliESDv0KineCuts.cxx:356
 AliESDv0KineCuts.cxx:357
 AliESDv0KineCuts.cxx:358
 AliESDv0KineCuts.cxx:359
 AliESDv0KineCuts.cxx:360
 AliESDv0KineCuts.cxx:361
 AliESDv0KineCuts.cxx:362
 AliESDv0KineCuts.cxx:363
 AliESDv0KineCuts.cxx:364
 AliESDv0KineCuts.cxx:365
 AliESDv0KineCuts.cxx:366
 AliESDv0KineCuts.cxx:367
 AliESDv0KineCuts.cxx:368
 AliESDv0KineCuts.cxx:369
 AliESDv0KineCuts.cxx:370
 AliESDv0KineCuts.cxx:371
 AliESDv0KineCuts.cxx:372
 AliESDv0KineCuts.cxx:373
 AliESDv0KineCuts.cxx:374
 AliESDv0KineCuts.cxx:375
 AliESDv0KineCuts.cxx:376
 AliESDv0KineCuts.cxx:377
 AliESDv0KineCuts.cxx:378
 AliESDv0KineCuts.cxx:379
 AliESDv0KineCuts.cxx:380
 AliESDv0KineCuts.cxx:381
 AliESDv0KineCuts.cxx:382
 AliESDv0KineCuts.cxx:383
 AliESDv0KineCuts.cxx:384
 AliESDv0KineCuts.cxx:385
 AliESDv0KineCuts.cxx:386
 AliESDv0KineCuts.cxx:387
 AliESDv0KineCuts.cxx:388
 AliESDv0KineCuts.cxx:389
 AliESDv0KineCuts.cxx:390
 AliESDv0KineCuts.cxx:391
 AliESDv0KineCuts.cxx:392
 AliESDv0KineCuts.cxx:393
 AliESDv0KineCuts.cxx:394
 AliESDv0KineCuts.cxx:395
 AliESDv0KineCuts.cxx:396
 AliESDv0KineCuts.cxx:397
 AliESDv0KineCuts.cxx:398
 AliESDv0KineCuts.cxx:399
 AliESDv0KineCuts.cxx:400
 AliESDv0KineCuts.cxx:401
 AliESDv0KineCuts.cxx:402
 AliESDv0KineCuts.cxx:403
 AliESDv0KineCuts.cxx:404
 AliESDv0KineCuts.cxx:405
 AliESDv0KineCuts.cxx:406
 AliESDv0KineCuts.cxx:407
 AliESDv0KineCuts.cxx:408
 AliESDv0KineCuts.cxx:409
 AliESDv0KineCuts.cxx:410
 AliESDv0KineCuts.cxx:411
 AliESDv0KineCuts.cxx:412
 AliESDv0KineCuts.cxx:413
 AliESDv0KineCuts.cxx:414
 AliESDv0KineCuts.cxx:415
 AliESDv0KineCuts.cxx:416
 AliESDv0KineCuts.cxx:417
 AliESDv0KineCuts.cxx:418
 AliESDv0KineCuts.cxx:419
 AliESDv0KineCuts.cxx:420
 AliESDv0KineCuts.cxx:421
 AliESDv0KineCuts.cxx:422
 AliESDv0KineCuts.cxx:423
 AliESDv0KineCuts.cxx:424
 AliESDv0KineCuts.cxx:425
 AliESDv0KineCuts.cxx:426
 AliESDv0KineCuts.cxx:427
 AliESDv0KineCuts.cxx:428
 AliESDv0KineCuts.cxx:429
 AliESDv0KineCuts.cxx:430
 AliESDv0KineCuts.cxx:431
 AliESDv0KineCuts.cxx:432
 AliESDv0KineCuts.cxx:433
 AliESDv0KineCuts.cxx:434
 AliESDv0KineCuts.cxx:435
 AliESDv0KineCuts.cxx:436
 AliESDv0KineCuts.cxx:437
 AliESDv0KineCuts.cxx:438
 AliESDv0KineCuts.cxx:439
 AliESDv0KineCuts.cxx:440
 AliESDv0KineCuts.cxx:441
 AliESDv0KineCuts.cxx:442
 AliESDv0KineCuts.cxx:443
 AliESDv0KineCuts.cxx:444
 AliESDv0KineCuts.cxx:445
 AliESDv0KineCuts.cxx:446
 AliESDv0KineCuts.cxx:447
 AliESDv0KineCuts.cxx:448
 AliESDv0KineCuts.cxx:449
 AliESDv0KineCuts.cxx:450
 AliESDv0KineCuts.cxx:451
 AliESDv0KineCuts.cxx:452
 AliESDv0KineCuts.cxx:453
 AliESDv0KineCuts.cxx:454
 AliESDv0KineCuts.cxx:455
 AliESDv0KineCuts.cxx:456
 AliESDv0KineCuts.cxx:457
 AliESDv0KineCuts.cxx:458
 AliESDv0KineCuts.cxx:459
 AliESDv0KineCuts.cxx:460
 AliESDv0KineCuts.cxx:461
 AliESDv0KineCuts.cxx:462
 AliESDv0KineCuts.cxx:463
 AliESDv0KineCuts.cxx:464
 AliESDv0KineCuts.cxx:465
 AliESDv0KineCuts.cxx:466
 AliESDv0KineCuts.cxx:467
 AliESDv0KineCuts.cxx:468
 AliESDv0KineCuts.cxx:469
 AliESDv0KineCuts.cxx:470
 AliESDv0KineCuts.cxx:471
 AliESDv0KineCuts.cxx:472
 AliESDv0KineCuts.cxx:473
 AliESDv0KineCuts.cxx:474
 AliESDv0KineCuts.cxx:475
 AliESDv0KineCuts.cxx:476
 AliESDv0KineCuts.cxx:477
 AliESDv0KineCuts.cxx:478
 AliESDv0KineCuts.cxx:479
 AliESDv0KineCuts.cxx:480
 AliESDv0KineCuts.cxx:481
 AliESDv0KineCuts.cxx:482
 AliESDv0KineCuts.cxx:483
 AliESDv0KineCuts.cxx:484
 AliESDv0KineCuts.cxx:485
 AliESDv0KineCuts.cxx:486
 AliESDv0KineCuts.cxx:487
 AliESDv0KineCuts.cxx:488
 AliESDv0KineCuts.cxx:489
 AliESDv0KineCuts.cxx:490
 AliESDv0KineCuts.cxx:491
 AliESDv0KineCuts.cxx:492
 AliESDv0KineCuts.cxx:493
 AliESDv0KineCuts.cxx:494
 AliESDv0KineCuts.cxx:495
 AliESDv0KineCuts.cxx:496
 AliESDv0KineCuts.cxx:497
 AliESDv0KineCuts.cxx:498
 AliESDv0KineCuts.cxx:499
 AliESDv0KineCuts.cxx:500
 AliESDv0KineCuts.cxx:501
 AliESDv0KineCuts.cxx:502
 AliESDv0KineCuts.cxx:503
 AliESDv0KineCuts.cxx:504
 AliESDv0KineCuts.cxx:505
 AliESDv0KineCuts.cxx:506
 AliESDv0KineCuts.cxx:507
 AliESDv0KineCuts.cxx:508
 AliESDv0KineCuts.cxx:509
 AliESDv0KineCuts.cxx:510
 AliESDv0KineCuts.cxx:511
 AliESDv0KineCuts.cxx:512
 AliESDv0KineCuts.cxx:513
 AliESDv0KineCuts.cxx:514
 AliESDv0KineCuts.cxx:515
 AliESDv0KineCuts.cxx:516
 AliESDv0KineCuts.cxx:517
 AliESDv0KineCuts.cxx:518
 AliESDv0KineCuts.cxx:519
 AliESDv0KineCuts.cxx:520
 AliESDv0KineCuts.cxx:521
 AliESDv0KineCuts.cxx:522
 AliESDv0KineCuts.cxx:523
 AliESDv0KineCuts.cxx:524
 AliESDv0KineCuts.cxx:525
 AliESDv0KineCuts.cxx:526
 AliESDv0KineCuts.cxx:527
 AliESDv0KineCuts.cxx:528
 AliESDv0KineCuts.cxx:529
 AliESDv0KineCuts.cxx:530
 AliESDv0KineCuts.cxx:531
 AliESDv0KineCuts.cxx:532
 AliESDv0KineCuts.cxx:533
 AliESDv0KineCuts.cxx:534
 AliESDv0KineCuts.cxx:535
 AliESDv0KineCuts.cxx:536
 AliESDv0KineCuts.cxx:537
 AliESDv0KineCuts.cxx:538
 AliESDv0KineCuts.cxx:539
 AliESDv0KineCuts.cxx:540
 AliESDv0KineCuts.cxx:541
 AliESDv0KineCuts.cxx:542
 AliESDv0KineCuts.cxx:543
 AliESDv0KineCuts.cxx:544
 AliESDv0KineCuts.cxx:545
 AliESDv0KineCuts.cxx:546
 AliESDv0KineCuts.cxx:547
 AliESDv0KineCuts.cxx:548
 AliESDv0KineCuts.cxx:549
 AliESDv0KineCuts.cxx:550
 AliESDv0KineCuts.cxx:551
 AliESDv0KineCuts.cxx:552
 AliESDv0KineCuts.cxx:553
 AliESDv0KineCuts.cxx:554
 AliESDv0KineCuts.cxx:555
 AliESDv0KineCuts.cxx:556
 AliESDv0KineCuts.cxx:557
 AliESDv0KineCuts.cxx:558
 AliESDv0KineCuts.cxx:559
 AliESDv0KineCuts.cxx:560
 AliESDv0KineCuts.cxx:561
 AliESDv0KineCuts.cxx:562
 AliESDv0KineCuts.cxx:563
 AliESDv0KineCuts.cxx:564
 AliESDv0KineCuts.cxx:565
 AliESDv0KineCuts.cxx:566
 AliESDv0KineCuts.cxx:567
 AliESDv0KineCuts.cxx:568
 AliESDv0KineCuts.cxx:569
 AliESDv0KineCuts.cxx:570
 AliESDv0KineCuts.cxx:571
 AliESDv0KineCuts.cxx:572
 AliESDv0KineCuts.cxx:573
 AliESDv0KineCuts.cxx:574
 AliESDv0KineCuts.cxx:575
 AliESDv0KineCuts.cxx:576
 AliESDv0KineCuts.cxx:577
 AliESDv0KineCuts.cxx:578
 AliESDv0KineCuts.cxx:579
 AliESDv0KineCuts.cxx:580
 AliESDv0KineCuts.cxx:581
 AliESDv0KineCuts.cxx:582
 AliESDv0KineCuts.cxx:583
 AliESDv0KineCuts.cxx:584
 AliESDv0KineCuts.cxx:585
 AliESDv0KineCuts.cxx:586
 AliESDv0KineCuts.cxx:587
 AliESDv0KineCuts.cxx:588
 AliESDv0KineCuts.cxx:589
 AliESDv0KineCuts.cxx:590
 AliESDv0KineCuts.cxx:591
 AliESDv0KineCuts.cxx:592
 AliESDv0KineCuts.cxx:593
 AliESDv0KineCuts.cxx:594
 AliESDv0KineCuts.cxx:595
 AliESDv0KineCuts.cxx:596
 AliESDv0KineCuts.cxx:597
 AliESDv0KineCuts.cxx:598
 AliESDv0KineCuts.cxx:599
 AliESDv0KineCuts.cxx:600
 AliESDv0KineCuts.cxx:601
 AliESDv0KineCuts.cxx:602
 AliESDv0KineCuts.cxx:603
 AliESDv0KineCuts.cxx:604
 AliESDv0KineCuts.cxx:605
 AliESDv0KineCuts.cxx:606
 AliESDv0KineCuts.cxx:607
 AliESDv0KineCuts.cxx:608
 AliESDv0KineCuts.cxx:609
 AliESDv0KineCuts.cxx:610
 AliESDv0KineCuts.cxx:611
 AliESDv0KineCuts.cxx:612
 AliESDv0KineCuts.cxx:613
 AliESDv0KineCuts.cxx:614
 AliESDv0KineCuts.cxx:615
 AliESDv0KineCuts.cxx:616
 AliESDv0KineCuts.cxx:617
 AliESDv0KineCuts.cxx:618
 AliESDv0KineCuts.cxx:619
 AliESDv0KineCuts.cxx:620
 AliESDv0KineCuts.cxx:621
 AliESDv0KineCuts.cxx:622
 AliESDv0KineCuts.cxx:623
 AliESDv0KineCuts.cxx:624
 AliESDv0KineCuts.cxx:625
 AliESDv0KineCuts.cxx:626
 AliESDv0KineCuts.cxx:627
 AliESDv0KineCuts.cxx:628
 AliESDv0KineCuts.cxx:629
 AliESDv0KineCuts.cxx:630
 AliESDv0KineCuts.cxx:631
 AliESDv0KineCuts.cxx:632
 AliESDv0KineCuts.cxx:633
 AliESDv0KineCuts.cxx:634
 AliESDv0KineCuts.cxx:635
 AliESDv0KineCuts.cxx:636
 AliESDv0KineCuts.cxx:637
 AliESDv0KineCuts.cxx:638
 AliESDv0KineCuts.cxx:639
 AliESDv0KineCuts.cxx:640
 AliESDv0KineCuts.cxx:641
 AliESDv0KineCuts.cxx:642
 AliESDv0KineCuts.cxx:643
 AliESDv0KineCuts.cxx:644
 AliESDv0KineCuts.cxx:645
 AliESDv0KineCuts.cxx:646
 AliESDv0KineCuts.cxx:647
 AliESDv0KineCuts.cxx:648
 AliESDv0KineCuts.cxx:649
 AliESDv0KineCuts.cxx:650
 AliESDv0KineCuts.cxx:651
 AliESDv0KineCuts.cxx:652
 AliESDv0KineCuts.cxx:653
 AliESDv0KineCuts.cxx:654
 AliESDv0KineCuts.cxx:655
 AliESDv0KineCuts.cxx:656
 AliESDv0KineCuts.cxx:657
 AliESDv0KineCuts.cxx:658
 AliESDv0KineCuts.cxx:659
 AliESDv0KineCuts.cxx:660
 AliESDv0KineCuts.cxx:661
 AliESDv0KineCuts.cxx:662
 AliESDv0KineCuts.cxx:663
 AliESDv0KineCuts.cxx:664
 AliESDv0KineCuts.cxx:665
 AliESDv0KineCuts.cxx:666
 AliESDv0KineCuts.cxx:667
 AliESDv0KineCuts.cxx:668
 AliESDv0KineCuts.cxx:669
 AliESDv0KineCuts.cxx:670
 AliESDv0KineCuts.cxx:671
 AliESDv0KineCuts.cxx:672
 AliESDv0KineCuts.cxx:673
 AliESDv0KineCuts.cxx:674
 AliESDv0KineCuts.cxx:675
 AliESDv0KineCuts.cxx:676
 AliESDv0KineCuts.cxx:677
 AliESDv0KineCuts.cxx:678
 AliESDv0KineCuts.cxx:679
 AliESDv0KineCuts.cxx:680
 AliESDv0KineCuts.cxx:681
 AliESDv0KineCuts.cxx:682
 AliESDv0KineCuts.cxx:683
 AliESDv0KineCuts.cxx:684
 AliESDv0KineCuts.cxx:685
 AliESDv0KineCuts.cxx:686
 AliESDv0KineCuts.cxx:687
 AliESDv0KineCuts.cxx:688
 AliESDv0KineCuts.cxx:689
 AliESDv0KineCuts.cxx:690
 AliESDv0KineCuts.cxx:691
 AliESDv0KineCuts.cxx:692
 AliESDv0KineCuts.cxx:693
 AliESDv0KineCuts.cxx:694
 AliESDv0KineCuts.cxx:695
 AliESDv0KineCuts.cxx:696
 AliESDv0KineCuts.cxx:697
 AliESDv0KineCuts.cxx:698
 AliESDv0KineCuts.cxx:699
 AliESDv0KineCuts.cxx:700
 AliESDv0KineCuts.cxx:701
 AliESDv0KineCuts.cxx:702
 AliESDv0KineCuts.cxx:703
 AliESDv0KineCuts.cxx:704
 AliESDv0KineCuts.cxx:705
 AliESDv0KineCuts.cxx:706
 AliESDv0KineCuts.cxx:707
 AliESDv0KineCuts.cxx:708
 AliESDv0KineCuts.cxx:709
 AliESDv0KineCuts.cxx:710
 AliESDv0KineCuts.cxx:711
 AliESDv0KineCuts.cxx:712
 AliESDv0KineCuts.cxx:713
 AliESDv0KineCuts.cxx:714
 AliESDv0KineCuts.cxx:715
 AliESDv0KineCuts.cxx:716
 AliESDv0KineCuts.cxx:717
 AliESDv0KineCuts.cxx:718
 AliESDv0KineCuts.cxx:719
 AliESDv0KineCuts.cxx:720
 AliESDv0KineCuts.cxx:721
 AliESDv0KineCuts.cxx:722
 AliESDv0KineCuts.cxx:723
 AliESDv0KineCuts.cxx:724
 AliESDv0KineCuts.cxx:725
 AliESDv0KineCuts.cxx:726
 AliESDv0KineCuts.cxx:727
 AliESDv0KineCuts.cxx:728
 AliESDv0KineCuts.cxx:729
 AliESDv0KineCuts.cxx:730
 AliESDv0KineCuts.cxx:731
 AliESDv0KineCuts.cxx:732
 AliESDv0KineCuts.cxx:733
 AliESDv0KineCuts.cxx:734
 AliESDv0KineCuts.cxx:735
 AliESDv0KineCuts.cxx:736
 AliESDv0KineCuts.cxx:737
 AliESDv0KineCuts.cxx:738
 AliESDv0KineCuts.cxx:739
 AliESDv0KineCuts.cxx:740
 AliESDv0KineCuts.cxx:741
 AliESDv0KineCuts.cxx:742
 AliESDv0KineCuts.cxx:743
 AliESDv0KineCuts.cxx:744
 AliESDv0KineCuts.cxx:745
 AliESDv0KineCuts.cxx:746
 AliESDv0KineCuts.cxx:747
 AliESDv0KineCuts.cxx:748
 AliESDv0KineCuts.cxx:749
 AliESDv0KineCuts.cxx:750
 AliESDv0KineCuts.cxx:751
 AliESDv0KineCuts.cxx:752
 AliESDv0KineCuts.cxx:753
 AliESDv0KineCuts.cxx:754
 AliESDv0KineCuts.cxx:755
 AliESDv0KineCuts.cxx:756
 AliESDv0KineCuts.cxx:757
 AliESDv0KineCuts.cxx:758
 AliESDv0KineCuts.cxx:759
 AliESDv0KineCuts.cxx:760
 AliESDv0KineCuts.cxx:761
 AliESDv0KineCuts.cxx:762
 AliESDv0KineCuts.cxx:763
 AliESDv0KineCuts.cxx:764
 AliESDv0KineCuts.cxx:765
 AliESDv0KineCuts.cxx:766
 AliESDv0KineCuts.cxx:767
 AliESDv0KineCuts.cxx:768
 AliESDv0KineCuts.cxx:769
 AliESDv0KineCuts.cxx:770
 AliESDv0KineCuts.cxx:771
 AliESDv0KineCuts.cxx:772
 AliESDv0KineCuts.cxx:773
 AliESDv0KineCuts.cxx:774
 AliESDv0KineCuts.cxx:775
 AliESDv0KineCuts.cxx:776
 AliESDv0KineCuts.cxx:777
 AliESDv0KineCuts.cxx:778
 AliESDv0KineCuts.cxx:779
 AliESDv0KineCuts.cxx:780
 AliESDv0KineCuts.cxx:781
 AliESDv0KineCuts.cxx:782
 AliESDv0KineCuts.cxx:783
 AliESDv0KineCuts.cxx:784
 AliESDv0KineCuts.cxx:785
 AliESDv0KineCuts.cxx:786
 AliESDv0KineCuts.cxx:787
 AliESDv0KineCuts.cxx:788
 AliESDv0KineCuts.cxx:789
 AliESDv0KineCuts.cxx:790
 AliESDv0KineCuts.cxx:791
 AliESDv0KineCuts.cxx:792
 AliESDv0KineCuts.cxx:793
 AliESDv0KineCuts.cxx:794
 AliESDv0KineCuts.cxx:795
 AliESDv0KineCuts.cxx:796
 AliESDv0KineCuts.cxx:797
 AliESDv0KineCuts.cxx:798
 AliESDv0KineCuts.cxx:799
 AliESDv0KineCuts.cxx:800
 AliESDv0KineCuts.cxx:801
 AliESDv0KineCuts.cxx:802
 AliESDv0KineCuts.cxx:803
 AliESDv0KineCuts.cxx:804
 AliESDv0KineCuts.cxx:805
 AliESDv0KineCuts.cxx:806
 AliESDv0KineCuts.cxx:807
 AliESDv0KineCuts.cxx:808
 AliESDv0KineCuts.cxx:809
 AliESDv0KineCuts.cxx:810
 AliESDv0KineCuts.cxx:811
 AliESDv0KineCuts.cxx:812
 AliESDv0KineCuts.cxx:813
 AliESDv0KineCuts.cxx:814
 AliESDv0KineCuts.cxx:815
 AliESDv0KineCuts.cxx:816
 AliESDv0KineCuts.cxx:817
 AliESDv0KineCuts.cxx:818
 AliESDv0KineCuts.cxx:819
 AliESDv0KineCuts.cxx:820
 AliESDv0KineCuts.cxx:821
 AliESDv0KineCuts.cxx:822
 AliESDv0KineCuts.cxx:823
 AliESDv0KineCuts.cxx:824
 AliESDv0KineCuts.cxx:825
 AliESDv0KineCuts.cxx:826
 AliESDv0KineCuts.cxx:827
 AliESDv0KineCuts.cxx:828
 AliESDv0KineCuts.cxx:829
 AliESDv0KineCuts.cxx:830
 AliESDv0KineCuts.cxx:831
 AliESDv0KineCuts.cxx:832
 AliESDv0KineCuts.cxx:833
 AliESDv0KineCuts.cxx:834
 AliESDv0KineCuts.cxx:835
 AliESDv0KineCuts.cxx:836
 AliESDv0KineCuts.cxx:837
 AliESDv0KineCuts.cxx:838
 AliESDv0KineCuts.cxx:839
 AliESDv0KineCuts.cxx:840
 AliESDv0KineCuts.cxx:841
 AliESDv0KineCuts.cxx:842
 AliESDv0KineCuts.cxx:843
 AliESDv0KineCuts.cxx:844
 AliESDv0KineCuts.cxx:845
 AliESDv0KineCuts.cxx:846
 AliESDv0KineCuts.cxx:847
 AliESDv0KineCuts.cxx:848
 AliESDv0KineCuts.cxx:849
 AliESDv0KineCuts.cxx:850
 AliESDv0KineCuts.cxx:851
 AliESDv0KineCuts.cxx:852
 AliESDv0KineCuts.cxx:853
 AliESDv0KineCuts.cxx:854
 AliESDv0KineCuts.cxx:855
 AliESDv0KineCuts.cxx:856
 AliESDv0KineCuts.cxx:857
 AliESDv0KineCuts.cxx:858
 AliESDv0KineCuts.cxx:859
 AliESDv0KineCuts.cxx:860
 AliESDv0KineCuts.cxx:861
 AliESDv0KineCuts.cxx:862
 AliESDv0KineCuts.cxx:863
 AliESDv0KineCuts.cxx:864
 AliESDv0KineCuts.cxx:865
 AliESDv0KineCuts.cxx:866
 AliESDv0KineCuts.cxx:867
 AliESDv0KineCuts.cxx:868
 AliESDv0KineCuts.cxx:869
 AliESDv0KineCuts.cxx:870
 AliESDv0KineCuts.cxx:871
 AliESDv0KineCuts.cxx:872
 AliESDv0KineCuts.cxx:873
 AliESDv0KineCuts.cxx:874
 AliESDv0KineCuts.cxx:875
 AliESDv0KineCuts.cxx:876
 AliESDv0KineCuts.cxx:877
 AliESDv0KineCuts.cxx:878
 AliESDv0KineCuts.cxx:879
 AliESDv0KineCuts.cxx:880
 AliESDv0KineCuts.cxx:881
 AliESDv0KineCuts.cxx:882
 AliESDv0KineCuts.cxx:883
 AliESDv0KineCuts.cxx:884
 AliESDv0KineCuts.cxx:885
 AliESDv0KineCuts.cxx:886
 AliESDv0KineCuts.cxx:887
 AliESDv0KineCuts.cxx:888
 AliESDv0KineCuts.cxx:889
 AliESDv0KineCuts.cxx:890
 AliESDv0KineCuts.cxx:891
 AliESDv0KineCuts.cxx:892
 AliESDv0KineCuts.cxx:893
 AliESDv0KineCuts.cxx:894
 AliESDv0KineCuts.cxx:895
 AliESDv0KineCuts.cxx:896
 AliESDv0KineCuts.cxx:897
 AliESDv0KineCuts.cxx:898
 AliESDv0KineCuts.cxx:899
 AliESDv0KineCuts.cxx:900
 AliESDv0KineCuts.cxx:901
 AliESDv0KineCuts.cxx:902
 AliESDv0KineCuts.cxx:903
 AliESDv0KineCuts.cxx:904
 AliESDv0KineCuts.cxx:905
 AliESDv0KineCuts.cxx:906
 AliESDv0KineCuts.cxx:907
 AliESDv0KineCuts.cxx:908
 AliESDv0KineCuts.cxx:909
 AliESDv0KineCuts.cxx:910
 AliESDv0KineCuts.cxx:911
 AliESDv0KineCuts.cxx:912
 AliESDv0KineCuts.cxx:913
 AliESDv0KineCuts.cxx:914
 AliESDv0KineCuts.cxx:915
 AliESDv0KineCuts.cxx:916
 AliESDv0KineCuts.cxx:917
 AliESDv0KineCuts.cxx:918
 AliESDv0KineCuts.cxx:919
 AliESDv0KineCuts.cxx:920
 AliESDv0KineCuts.cxx:921
 AliESDv0KineCuts.cxx:922
 AliESDv0KineCuts.cxx:923
 AliESDv0KineCuts.cxx:924
 AliESDv0KineCuts.cxx:925
 AliESDv0KineCuts.cxx:926
 AliESDv0KineCuts.cxx:927
 AliESDv0KineCuts.cxx:928
 AliESDv0KineCuts.cxx:929
 AliESDv0KineCuts.cxx:930
 AliESDv0KineCuts.cxx:931
 AliESDv0KineCuts.cxx:932
 AliESDv0KineCuts.cxx:933
 AliESDv0KineCuts.cxx:934
 AliESDv0KineCuts.cxx:935
 AliESDv0KineCuts.cxx:936
 AliESDv0KineCuts.cxx:937
 AliESDv0KineCuts.cxx:938
 AliESDv0KineCuts.cxx:939
 AliESDv0KineCuts.cxx:940
 AliESDv0KineCuts.cxx:941
 AliESDv0KineCuts.cxx:942
 AliESDv0KineCuts.cxx:943
 AliESDv0KineCuts.cxx:944
 AliESDv0KineCuts.cxx:945
 AliESDv0KineCuts.cxx:946
 AliESDv0KineCuts.cxx:947
 AliESDv0KineCuts.cxx:948
 AliESDv0KineCuts.cxx:949
 AliESDv0KineCuts.cxx:950
 AliESDv0KineCuts.cxx:951
 AliESDv0KineCuts.cxx:952
 AliESDv0KineCuts.cxx:953
 AliESDv0KineCuts.cxx:954
 AliESDv0KineCuts.cxx:955
 AliESDv0KineCuts.cxx:956
 AliESDv0KineCuts.cxx:957
 AliESDv0KineCuts.cxx:958
 AliESDv0KineCuts.cxx:959
 AliESDv0KineCuts.cxx:960
 AliESDv0KineCuts.cxx:961
 AliESDv0KineCuts.cxx:962
 AliESDv0KineCuts.cxx:963
 AliESDv0KineCuts.cxx:964
 AliESDv0KineCuts.cxx:965
 AliESDv0KineCuts.cxx:966
 AliESDv0KineCuts.cxx:967
 AliESDv0KineCuts.cxx:968
 AliESDv0KineCuts.cxx:969
 AliESDv0KineCuts.cxx:970
 AliESDv0KineCuts.cxx:971
 AliESDv0KineCuts.cxx:972
 AliESDv0KineCuts.cxx:973
 AliESDv0KineCuts.cxx:974
 AliESDv0KineCuts.cxx:975
 AliESDv0KineCuts.cxx:976
 AliESDv0KineCuts.cxx:977
 AliESDv0KineCuts.cxx:978
 AliESDv0KineCuts.cxx:979
 AliESDv0KineCuts.cxx:980
 AliESDv0KineCuts.cxx:981
 AliESDv0KineCuts.cxx:982
 AliESDv0KineCuts.cxx:983
 AliESDv0KineCuts.cxx:984
 AliESDv0KineCuts.cxx:985
 AliESDv0KineCuts.cxx:986
 AliESDv0KineCuts.cxx:987
 AliESDv0KineCuts.cxx:988
 AliESDv0KineCuts.cxx:989
 AliESDv0KineCuts.cxx:990
 AliESDv0KineCuts.cxx:991
 AliESDv0KineCuts.cxx:992
 AliESDv0KineCuts.cxx:993
 AliESDv0KineCuts.cxx:994
 AliESDv0KineCuts.cxx:995
 AliESDv0KineCuts.cxx:996
 AliESDv0KineCuts.cxx:997
 AliESDv0KineCuts.cxx:998
 AliESDv0KineCuts.cxx:999
 AliESDv0KineCuts.cxx:1000
 AliESDv0KineCuts.cxx:1001
 AliESDv0KineCuts.cxx:1002
 AliESDv0KineCuts.cxx:1003
 AliESDv0KineCuts.cxx:1004
 AliESDv0KineCuts.cxx:1005
 AliESDv0KineCuts.cxx:1006
 AliESDv0KineCuts.cxx:1007
 AliESDv0KineCuts.cxx:1008
 AliESDv0KineCuts.cxx:1009
 AliESDv0KineCuts.cxx:1010
 AliESDv0KineCuts.cxx:1011
 AliESDv0KineCuts.cxx:1012
 AliESDv0KineCuts.cxx:1013
 AliESDv0KineCuts.cxx:1014
 AliESDv0KineCuts.cxx:1015
 AliESDv0KineCuts.cxx:1016
 AliESDv0KineCuts.cxx:1017
 AliESDv0KineCuts.cxx:1018
 AliESDv0KineCuts.cxx:1019
 AliESDv0KineCuts.cxx:1020
 AliESDv0KineCuts.cxx:1021
 AliESDv0KineCuts.cxx:1022
 AliESDv0KineCuts.cxx:1023
 AliESDv0KineCuts.cxx:1024
 AliESDv0KineCuts.cxx:1025
 AliESDv0KineCuts.cxx:1026
 AliESDv0KineCuts.cxx:1027
 AliESDv0KineCuts.cxx:1028
 AliESDv0KineCuts.cxx:1029
 AliESDv0KineCuts.cxx:1030
 AliESDv0KineCuts.cxx:1031
 AliESDv0KineCuts.cxx:1032
 AliESDv0KineCuts.cxx:1033
 AliESDv0KineCuts.cxx:1034
 AliESDv0KineCuts.cxx:1035
 AliESDv0KineCuts.cxx:1036
 AliESDv0KineCuts.cxx:1037
 AliESDv0KineCuts.cxx:1038
 AliESDv0KineCuts.cxx:1039
 AliESDv0KineCuts.cxx:1040
 AliESDv0KineCuts.cxx:1041
 AliESDv0KineCuts.cxx:1042
 AliESDv0KineCuts.cxx:1043
 AliESDv0KineCuts.cxx:1044
 AliESDv0KineCuts.cxx:1045
 AliESDv0KineCuts.cxx:1046
 AliESDv0KineCuts.cxx:1047
 AliESDv0KineCuts.cxx:1048
 AliESDv0KineCuts.cxx:1049
 AliESDv0KineCuts.cxx:1050
 AliESDv0KineCuts.cxx:1051
 AliESDv0KineCuts.cxx:1052
 AliESDv0KineCuts.cxx:1053
 AliESDv0KineCuts.cxx:1054
 AliESDv0KineCuts.cxx:1055
 AliESDv0KineCuts.cxx:1056
 AliESDv0KineCuts.cxx:1057
 AliESDv0KineCuts.cxx:1058
 AliESDv0KineCuts.cxx:1059
 AliESDv0KineCuts.cxx:1060
 AliESDv0KineCuts.cxx:1061
 AliESDv0KineCuts.cxx:1062
 AliESDv0KineCuts.cxx:1063
 AliESDv0KineCuts.cxx:1064
 AliESDv0KineCuts.cxx:1065
 AliESDv0KineCuts.cxx:1066
 AliESDv0KineCuts.cxx:1067
 AliESDv0KineCuts.cxx:1068
 AliESDv0KineCuts.cxx:1069
 AliESDv0KineCuts.cxx:1070
 AliESDv0KineCuts.cxx:1071
 AliESDv0KineCuts.cxx:1072
 AliESDv0KineCuts.cxx:1073
 AliESDv0KineCuts.cxx:1074
 AliESDv0KineCuts.cxx:1075
 AliESDv0KineCuts.cxx:1076
 AliESDv0KineCuts.cxx:1077
 AliESDv0KineCuts.cxx:1078
 AliESDv0KineCuts.cxx:1079
 AliESDv0KineCuts.cxx:1080
 AliESDv0KineCuts.cxx:1081
 AliESDv0KineCuts.cxx:1082
 AliESDv0KineCuts.cxx:1083
 AliESDv0KineCuts.cxx:1084
 AliESDv0KineCuts.cxx:1085
 AliESDv0KineCuts.cxx:1086
 AliESDv0KineCuts.cxx:1087
 AliESDv0KineCuts.cxx:1088
 AliESDv0KineCuts.cxx:1089
 AliESDv0KineCuts.cxx:1090
 AliESDv0KineCuts.cxx:1091
 AliESDv0KineCuts.cxx:1092
 AliESDv0KineCuts.cxx:1093
 AliESDv0KineCuts.cxx:1094
 AliESDv0KineCuts.cxx:1095
 AliESDv0KineCuts.cxx:1096
 AliESDv0KineCuts.cxx:1097