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 AOD V0 candidates for PID and dectector resonse
 * studies.
 */

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

#include "AliAODv0.h"
#include "AliAODTrack.h"
#include "AliAODVertex.h"
#include "AliAODEvent.h"
#include "AliESDtrack.h"
#include "AliVEvent.h"
#include "AliLog.h"
#include "AliKFParticle.h"
#include "AliVTrack.h"
#include "AliKFVertex.h"

#include "AliAODv0KineCuts.h"

ClassImp(AliAODv0KineCuts)

//____________________________________________________________________
AliAODv0KineCuts::AliAODv0KineCuts() :
  fEvent(0x0)
  , fPrimaryVertex(0x0)
  , fType(0)
  , fMode(0)
  , fTPCNcls(30)
  , fTPCrefit(kTRUE)
  , fTPCclsRatio(0.6)
  , fNoKinks(kTRUE)
  , fKinkMotherList(1000)
  , fNumberKinkMothers(0)
  , fGcutChi2NDF(10)
  , fGcutInvMass(0.05)
  , fK0cutChi2NDF(10)
  , fLcutChi2NDF(10)
  , fUseExternalVertex(kFALSE)
  , fDeleteVertex(kFALSE)
{
  //
  // Default constructor
  //

  // default single track cuts
  fTPCNcls = 30;                // minimal number of the TPC clusters
  fTPCrefit = kTRUE;           // TPC refit
  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
    
}
//____________________________________________________________________
AliAODv0KineCuts::~AliAODv0KineCuts(){
  //
  // Destructor
  //


}
//____________________________________________________________________
AliAODv0KineCuts::AliAODv0KineCuts(const AliAODv0KineCuts &ref):
  TObject(ref)
  , fEvent(0x0)
  , fPrimaryVertex(0x0)
  , fType(0)
  , fMode(0)
  , fTPCNcls(30)
  , fTPCrefit(kTRUE)
  , fTPCclsRatio(0.6)
  , fNoKinks(kTRUE)
  , fKinkMotherList(ref.fKinkMotherList)
  , fNumberKinkMothers(ref.fNumberKinkMothers)
  , fGcutChi2NDF(10)
  , fGcutInvMass(0.05)
  , fK0cutChi2NDF(10)
  , fLcutChi2NDF(10)
  , fUseExternalVertex(kFALSE)
  , fDeleteVertex(kFALSE)
{
  //
  // Copy operator
  //

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

  TObject::Copy(ref);

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

  // default single track cuts
  target.fTPCNcls = fTPCNcls;
  target.fTPCrefit = fTPCrefit;
  target.fTPCclsRatio = fTPCclsRatio;
  target.fNoKinks = fNoKinks;
  target.fKinkMotherList = fKinkMotherList;
  target.fNumberKinkMothers = fNumberKinkMothers;
  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  AliAODv0KineCuts::ProcessV0(AliAODv0* 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  AliAODv0KineCuts::ProcessV0(AliAODv0* 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 AliAODv0KineCuts::PreselectV0(AliAODv0* 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
  //
 
  // for clarity
  const Float_t alpha =v0->AlphaV0(); //ap[0];
  const Float_t qt = v0->PtArmV0();//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  AliAODv0KineCuts::SingleTrackCuts(AliAODv0 * const v0) const 
{
  //
  // apply single track cuts
  // correct sign not relevat here
  //

  if(!v0) return kFALSE;
  
  AliAODTrack* d[2] = {
    dynamic_cast<AliAODTrack*>(v0->GetSecondaryVtx()->GetDaughter(0)),
    dynamic_cast<AliAODTrack*>(v0->GetSecondaryVtx()->GetDaughter(1))
  };
  
  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 & AliAODTrack::kTPCrefit)) 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(fNoKinks && (IsKinkDaughter(d[i]) || IsKinkMother(d[i]))) return kFALSE;
    
  }

  return kTRUE;
}
//____________________________________________________________________
Bool_t AliAODv0KineCuts::CaseGamma(AliAODv0* 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 = 0;
    nIndex = 1;
  }
  else{
    pIndex = 1;
    nIndex = 0;    
  }
  daughter[0] = dynamic_cast<AliVTrack *>(v0->GetSecondaryVtx()->GetDaughter(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(v0->GetSecondaryVtx()->GetDaughter(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;

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

  Float_t iMass = v0->InvMass2Prongs(0,1,11,11);

  // cos pointing angle
  Double_t cosPoint = v0->CosPointingAngle(dynamic_cast<AliAODVertex *>(fEvent->GetPrimaryVertex()));
  cosPoint = TMath::ACos(cosPoint);

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

  // Production vertex
  Double_t xyz[3]; 
  v0->GetXYZ(xyz);
  Double_t r = TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);

  Double_t xy[2];
  Double_t r2 = -1.;
  if ( GetConvPosXY(static_cast<AliAODTrack *>(daughter[0]), static_cast<AliAODTrack*>(daughter[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  AliAODv0KineCuts::CaseK0(AliAODv0* 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 = 0;
    nIndex = 1;
  }
  else{
    pIndex = 1;
    nIndex = 0;    
  }
  daughter[0] = dynamic_cast<AliVTrack *>(v0->GetSecondaryVtx()->GetDaughter(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(v0->GetSecondaryVtx()->GetDaughter(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;

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

  Float_t iMass = v0->MassK0Short();

  // cos pointing angle
  Double_t cosPoint = v0->CosPointingAngle(dynamic_cast<AliAODVertex *>(fEvent->GetPrimaryVertex()));
  cosPoint = TMath::ACos(cosPoint);

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

  // Production vertex
  Double_t xyz[3]; 
  v0->GetXYZ(xyz);

  Double_t r = TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);  

  // 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  AliAODv0KineCuts::CaseLambda(AliAODv0* 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 = 0;
    nIndex = 1;
    mMass[0] = v0->MassLambda();
    mMass[1] = v0->MassAntiLambda();
  }
  else{
    pIndex = 1;
    nIndex = 0;    
    mMass[0] = v0->MassAntiLambda();
    mMass[1] = v0->MassLambda();
  }
  daughter[0] = dynamic_cast<AliVTrack *>(v0->GetSecondaryVtx()->GetDaughter(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(v0->GetSecondaryVtx()->GetDaughter(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))};
  
  Float_t p[2] = {static_cast<Float_t>(daughter[0]->P()), static_cast<Float_t>(daughter[1]->P())}; 

  // 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->MassLambda() : v0->MassAntiLambda();
  } else{
    iMass = (type == 0) ? v0->MassAntiLambda() : v0->MassLambda();
  }

  // cos pointing angle
  Double_t cosPoint = v0->CosPointingAngle(dynamic_cast<AliAODVertex *>(fEvent->GetPrimaryVertex()));
  cosPoint = TMath::ACos(cosPoint);

  // DCA between daughters
  Double_t dca = v0->DcaV0Daughters();
  
  // Production vertex
  Double_t xyz[3]; 
  v0->GetXYZ(xyz);
  Double_t r = TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);

  // 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  AliAODv0KineCuts::V0CutsCommon(const AliAODv0 * const v0) const 
{
  //
  // V0 cuts common to all V0s
  //

  AliAODTrack* dN, *dP; 

  dP = dynamic_cast<AliAODTrack *>(v0->GetSecondaryVtx()->GetDaughter(0));
  dN = dynamic_cast<AliAODTrack *>(v0->GetSecondaryVtx()->GetDaughter(1));
  
  if(!dN || !dP) return kFALSE;

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

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

  return kTRUE;
}
//____________________________________________________________________
Bool_t AliAODv0KineCuts::CheckSigns(AliAODv0* const v0) const 
{
  //
  // check wheter the sign was correctly applied to 
  // V0 daughter tracks
  //
  
  Bool_t correct = kFALSE;

  AliAODTrack* d[2] = {
    dynamic_cast<AliAODTrack*>(v0->GetSecondaryVtx()->GetDaughter(0)),
    dynamic_cast<AliAODTrack*>(v0->GetSecondaryVtx()->GetDaughter(1))
  ,};

  Int_t sign[2];
  sign[0] = d[0]->Charge() > 0. ? 1 : -1;
  sign[1] = d[1]->Charge() > 0. ? 1 : -1;
  
  if(-1 == sign[0] && 1 == sign[1]){
    correct = kFALSE;
  }
  else{
    correct = kTRUE;
  }
  
  return correct;
}
//________________________________________________________________
Double_t AliAODv0KineCuts::PsiPair(AliAODv0* 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 = 0;
    nIndex = 1;
  }
  else{
    pIndex = 1;
    nIndex = 0;    
  }
 

  AliESDtrack* daughter[2];

  daughter[0] = new AliESDtrack(dynamic_cast<AliAODTrack *>(v0->GetSecondaryVtx()->GetDaughter(pIndex)));
  daughter[1] = new AliESDtrack(dynamic_cast<AliAODTrack *>(v0->GetSecondaryVtx()->GetDaughter(nIndex)));

  Double_t xyz[3];
  v0->GetXYZ(xyz);//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};

  //reconstructed cartesian momentum components of negative daughter;
  mn[0] = v0->MomNegX();
  mn[1] = v0->MomNegY();
  mn[2] = v0->MomNegZ();
  //reconstructed cartesian momentum components of positive daughter;
  mp[0] = v0->MomPosX();
  mp[1] = v0->MomPosY();
  mp[2] = v0->MomPosZ();

  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(xyz[0]*xyz[0] + xyz[1]*xyz[1]) + 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));  

  delete daughter[0]; delete daughter[1];
  return psiPair; 
}
//___________________________________________________________________
Bool_t  AliAODv0KineCuts::GetConvPosXY(AliAODTrack * const ptrack, AliAODTrack * const ntrack, Double_t convpos[2]) const
{
  //
  // recalculate the gamma conversion XY postition
  //

  const Double_t b = fEvent->GetMagneticField();

  AliESDtrack posESD(ptrack), negESD(ntrack);

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

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

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

  Double_t  neghelix[6];
  negESD.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  AliAODv0KineCuts::GetHelixCenter(AliAODTrack * 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];
  AliESDtrack esddaughter(track);
  esddaughter.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 *AliAODv0KineCuts::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  AliAODv0KineCuts::SetEvent(AliAODEvent* const event){
  //
  // direct setter of AOD event
  //
  fEvent = event;
  if(!fEvent){
    AliErrorClass("Invalid input event pointer");
    return;
  }

  // Set Mother vertex List
  fNumberKinkMothers = 0;
  if(fEvent->GetNumberOfVertices() > fKinkMotherList.GetSize()) fKinkMotherList.Set(fEvent->GetNumberOfVertices());
  for(Int_t ivertex=0; ivertex < fEvent->GetNumberOfVertices(); ivertex++) {
    AliAODVertex *aodvertex = fEvent->GetVertex(ivertex);
    if(!aodvertex) continue;
    if(aodvertex->GetType()==AliAODVertex::kKink) {
      AliAODTrack *mother = (AliAODTrack *) aodvertex->GetParent();
      if(!mother) continue;
      Int_t idmother = mother->GetID();
      fKinkMotherList[fNumberKinkMothers++] = idmother;
    }
  }

  if (fUseExternalVertex) return;
  else{
	if(fPrimaryVertex && fDeleteVertex){
		delete 	fPrimaryVertex;
		fPrimaryVertex=0x0;
	}
	fPrimaryVertex = new AliKFVertex(*(fEvent->GetPrimaryVertex()));
	fDeleteVertex=kTRUE;
	}



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

  fEvent = dynamic_cast<AliAODEvent*>(event);
  if(!fEvent){
    AliErrorClass("Invalid input event pointer");
    return;
  }
  
  // Set Mother vertex List
  fNumberKinkMothers = 0;
  if(fEvent->GetNumberOfVertices() > fKinkMotherList.GetSize()) fKinkMotherList.Set(fEvent->GetNumberOfVertices());
  for(Int_t ivertex=0; ivertex < fEvent->GetNumberOfVertices(); ivertex++) {
    AliAODVertex *aodvertex = fEvent->GetVertex(ivertex);
    if(!aodvertex) continue;
    if(aodvertex->GetType()==AliAODVertex::kKink) {
      AliAODTrack *mother = (AliAODTrack *) aodvertex->GetParent();
      if(!mother) continue;
      Int_t idmother = mother->GetID();
      fKinkMotherList[fNumberKinkMothers++] = idmother;
    }
  }

  if (fUseExternalVertex) return;
  else{
    if(fPrimaryVertex && fDeleteVertex){
      delete 	fPrimaryVertex;
      fPrimaryVertex=0x0;
      }
    fPrimaryVertex = new AliKFVertex(*(fEvent->GetPrimaryVertex()));
    fDeleteVertex=kTRUE;
  }
}


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




//________________________________________________________________
void AliAODv0KineCuts::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 AliAODv0KineCuts::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 AliAODv0KineCuts::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 AliAODv0KineCuts::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
  

  
}

//___________________________________________________________________
Bool_t AliAODv0KineCuts::IsKinkMother(const AliAODTrack * const track) const {
  //
  // Check if track is a kink mother
  //
  for(int ivtx = 0; ivtx < fNumberKinkMothers; ivtx++){
    if(track->GetID() == fKinkMotherList[ivtx]) return kTRUE;
  }
  return kFALSE;
}

//___________________________________________________________________
Bool_t AliAODv0KineCuts::IsKinkDaughter(const AliAODTrack * const track) const {
  //
  // Check if track is a kink daughter
  //
  AliAODVertex *vtx = track->GetProdVertex();
  if(!vtx) return kFALSE;
  if(vtx->GetType()==AliAODVertex::kKink) return kTRUE;
  return kFALSE;
}

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