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.                  *
**************************************************************************/
//  * 20/04/2010 *
// Class for optimising and applying V0 cuts to obtain clean V0 samples
// Compatible with ESDs only
//
// Authors:
//    Matus Kalisky <matus.kalisky@cern.ch>
//

#include "TDatabasePDG.h"

#include "AliESDtrack.h"
#include "AliMCEvent.h"
#include "AliESDv0.h"
#include "AliKFParticle.h"
#include "AliKFVertex.h"
#include "AliLog.h"
#include "AliExternalTrackParam.h"

#include "AliHFEV0cuts.h"

ClassImp(AliHFEV0cuts)

//________________________________________________________________
AliHFEV0cuts::AliHFEV0cuts():
  fQA(NULL)
  , fQAmc(NULL)
  , fMCEvent(NULL)
  , fInputEvent(NULL)
  , fPrimaryVertex(NULL)
  , fCurrentV0id(0)
  , fPdaughterPDG(0)
  , fNdaughterPDG(0)
  , fDestBits(0)
{
 
  //
  // Default constructor
  //
  

}
//________________________________________________________________
AliHFEV0cuts::~AliHFEV0cuts()
{
  //
  // destructor
  //
  
  if (fQA && TESTBIT(fDestBits, kBitQA)) delete fQA;
  if (fQAmc && TESTBIT(fDestBits, kBitQAmc)) delete fQAmc;
}

//________________________________________________________________
AliHFEV0cuts::AliHFEV0cuts(const AliHFEV0cuts &ref):
  TObject(ref)
  , fQA(NULL)
  , fQAmc(NULL)
  , fMCEvent(NULL)
  , fInputEvent(NULL)
  , fPrimaryVertex(NULL)
  , fCurrentV0id(0)
  , fPdaughterPDG(0)
  , fNdaughterPDG(0)
  , fDestBits(0)
{
  //
  // Copy constructor
  //
  ref.Copy(*this);  
}
//________________________________________________________________
AliHFEV0cuts &AliHFEV0cuts::operator=(const AliHFEV0cuts &ref){
  //
  // Assignment operator
  //
  if(this != &ref)
    ref.Copy(*this);
  return *this;  
}
//________________________________________________________________
void AliHFEV0cuts::Copy(TObject &ref) const{
  //
  // Copy function
  // 
  AliHFEV0cuts &target = dynamic_cast<AliHFEV0cuts &>(ref);

  if(fQA) target.fQA = dynamic_cast<AliHFEcollection *>(fQA->Clone());  

  if(fQAmc) target.fQAmc = dynamic_cast<AliHFEcollection *>(fQAmc->Clone());  

  if(target.fMCEvent) delete target.fMCEvent;
  target.fMCEvent = new AliMCEvent;
  
  if(target.fPrimaryVertex) delete target.fPrimaryVertex;
  target.fPrimaryVertex = new AliKFVertex;

  TObject::Copy(ref);
  
}
//___________________________________________________________________
void AliHFEV0cuts::Init(const char* name){
  //
  // initialize the output objects and create histograms
  //

  //
  // all the "h_cut_XXX" histograms hare cut value distributions:
  // [0] for all candidates
  // [1] jus before the cut on given variable was applied, but after all the previous cuts
  //

  memset(&fDestBits, 0, sizeof(UInt_t));
  // now set the first two bits to 1
  SETBIT(fDestBits, kBitQA);
  SETBIT(fDestBits, kBitQAmc);
  

  fQA = new AliHFEcollection("fQA", name);

  fQAmc = new AliHFEcollection("fQAmc", name);

  // common for all V0s
  fQA->CreateTH2Fvector1(2, "h_all_AP", "armenteros plot for all V0 candidates", 200, -1, 1, 200, 0, 0.25);

  // gammas
  fQA->CreateTH1Fvector1(2, "h_cut_Gamma_CosPoint", "Gamma Cosine pointing angle; cos point. angle; counts", 100, 0, 0.1);
  fQA->CreateTH1Fvector1(2, "h_cut_Gamma_DCA", "DCA between the gamma daughters; dca (cm); counts", 100, 0, 2);
  fQA->CreateTH1Fvector1(2, "h_cut_Gamma_VtxR_old", "*old* Radius of the gamma conversion vertex; r (cm); counts", 1000, 0, 100);
  fQA->CreateTH1Fvector1(2, "h_cut_Gamma_VtxR", "Radius of the gamma conversion vertex; r (cm); counts", 1000, 0, 100);
  fQA->CreateTH1Fvector1(2, "h_cut_Gamma_PP", "gamma psi pair angle; psi pairangle (rad); counts", 100, 0, 2);
  fQA->CreateTH1Fvector1(2, "h_cut_Gamma_Chi2", "gamma Chi2/NDF; Chi2/NDF; counts", 100, 0, 50);
  fQA->CreateTH1Fvector1(2, "h_cut_Gamma_Sep", "gamma separation dist at TPC inned wall", 100, 0, 10);
  fQA->CreateTH1Fvector1(7, "h_Gamma_Mass", "Invariant mass of gammas; mass (GeV/c^{2}); counts", 100, 0, 0.2);
  
 
  // kaons
  fQA->CreateTH1Fvector1(2, "h_cut_K0_CosPoint", "K0 Cosine pointing angle; cos point. angle; counts", 100, 0, 0.1);
  fQA->CreateTH1Fvector1(2, "h_cut_K0_DCA", "DCA between the K0 daughters; dca (cm); counts", 100, 0, 2);
  fQA->CreateTH1Fvector1(2, "h_cut_K0_VtxR", "Radius of the K0 decay vertex; r (cm); counts", 1000, 0, 100);
  fQA->CreateTH1Fvector1(2, "h_cut_K0_Chi2", "K0 Chi2/NDF; Chi2/NDF; counts", 100, 0, 50);
  fQA->CreateTH1Fvector1(5, "h_K0_Mass", "Invariant mass of K0; mass (GeV/c^{2}); counts", 125, 0.45, 0.55);

  // lambda
  fQA->CreateTH1Fvector1(2, "h_cut_L_CosPoint", "L Cosine pointing angle; cos point. angle; counts", 100, 0, 0.1);
  fQA->CreateTH1Fvector1(2, "h_cut_L_DCA", "DCA between the L daughters; dca (cm); counts", 100, 0, 2);
  fQA->CreateTH1Fvector1(2, "h_cut_L_VtxR", "Radius of the L decay vertex; r (cm); counts", 1000, 0, 100);
  fQA->CreateTH1Fvector1(2, "h_cut_L_Chi2", "L Chi2/NDF; Chi2/NDF; counts", 100, 0, 50);
  fQA->CreateTH1Fvector1(5, "h_L_Mass", "Invariant mass of L; mass (GeV/c^{2}); counts", 60, 1.1, 1.13);
  fQA->CreateTH1Fvector1(5, "h_AL_Mass", "Invariant mass of anti L; mass (GeV/c^{2}); counts", 60, 1.1, 1.13);

  fQA->CreateTH2F("h_L_checks", "Lambda candidate check[0] -v- check[1]; check[0]; check[1]", 5, -0.75, 1.75, 6, -0.75, 1.75 );
  
  // electrons
  fQA->CreateTH1Fvector1(7, "h_Electron_P", "Momenta of conversion electrons -cuts-; P (GeV/c); counts", 50, 0.1, 20, 0);

  // K0 pions
  fQA->CreateTH1Fvector1(8, "h_PionK0_P", "Momenta of K0 pions -cuts-; P (GeV/c) counts;", 50, 0.1, 20, 0);
  
  // L pions
  fQA->CreateTH1Fvector1(9, "h_PionL_P", "Momenta of L pions -cuts-; P (GeV/c) counts;", 50, 0.1, 20, 0);
  
  // L protons
  fQA->CreateTH1Fvector1(9, "h_ProtonL_P", "Momenta of L protons -cuts-; P (GeV/c) counts;", 50, 0.1, 20, 0);    

  // single track cuts
  fQA->CreateTH1F("h_ST_NclsTPC", "Number of TPC clusters", 161, -1, 160);
  fQA->CreateTH1F("h_ST_TPCrefit", "TPC refit", 2, -0.5, 1.5);
  fQA->CreateTH1F("h_ST_chi2TPCcls", "chi2 per TPC cluster", 100, 0, 10);
  fQA->CreateTH1F("h_ST_TPCclsR", "TPC cluster ratio", 120, -0.1, 1.1);
  fQA->CreateTH1F("h_ST_kinks", "kinks", 2, -0.5, 1.5);
  fQA->CreateTH1F("h_ST_pt", "track pt", 100, 0.1, 20, 0);
  fQA->CreateTH1F("h_ST_eta", "track eta", 100, -1.5, 1.5);

  //
  // possibly new cuts
  //
 fQA->CreateTH2Fvector1(2, "h_cut_L_rdp_v_mp", "relative L daughter mom -v- mother mom; L mom (GeV/c); relative daughter mom p2/p1", 100, 0.1, 10, 100, 0, 1);

  // THnSparse histograms
  
  // THnSparse for the K0 mass
  // to be looked at after merging run by run
  // axes: mass, pt, theta, phi
  {
    Int_t nBin[4] = {100, 10, 10, 18};
    Double_t nMin[4] = {0.45, 0.1, 0., 0.};
    Double_t nMax[4] = {0.55, 10., TMath::Pi(), 2*TMath::Pi()};
    TString htitle = "K0 sparse; mass (GeV/c^{2}); p_{T} (GeV/c); theta (rad); phi(rad)";
    fQA->CreateTHnSparse("hK0", htitle, 4, nBin, nMin, nMax);
    fQA->BinLogAxis("hK0", 1);
  }


  // 
  // MC plots for checking and tuning the V0 cuts
  //
 
  const char *v0[4] = {"G", "K", "L"}; // to keep the names short
  // number of V0s left after each cut step - for signal and background - within given mass window
  for(Int_t i=0; i<3; ++i){
    fQAmc->CreateTH1F(Form("h_%s_cuts_S", v0[i]), Form("h_%s_cuts_S", v0[i]), 10, -0.5, 9.5);
    fQAmc->CreateTH1F(Form("h_%s_cuts_B", v0[i]), Form("h_%s_cuts_B", v0[i]), 10, -0.5, 9.5);
  }

  //
  // cut distributions for signal and background
  //

  const Float_t pMin = 0.1;
  const Float_t pMax = 10.;
  const Int_t pN = 12;


  // gamma signal
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_CosPoint_S", "S - Gamma Cosine pointing angle; mom (GeV/c); cos point. angle",  pN, pMin, pMax, 50, 0, 0.1, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_DCA_S", "S - DCA between the gamma daughters; mom (GeV/c); dca (cm)", pN, pMin, pMax, 50, 0, 2, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_VtxR_S", "S - Radius of the gamma conversion vertex; mom (GeV/c); r (cm)", pN, pMin, pMax, 100, 0, 100, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_PP_S", "S - gamma psi pair angle; mom (GeV/c); psi pairangle (rad)", pN, pMin, pMax, 50, 0, 0.5, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_Chi2_S", "S - gamma Chi2/NDF; mom (GeV/c); Chi2/NDF", pN, pMin, pMax, 50, 0, 25, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_Sep_S", "S - gamma separation TPC-inner; mom (GeV/c); tracks separatin (cm)", pN, pMin, pMax, 100, 0, 10, 0);
  // as a function of radius, not momentum
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_SepR_S", "S - gamma separation TPC-inner; radius cm; tracks separatin (cm)", 20, 0, 100, 100, 0, 20);

  fQAmc->CreateTH1Fvector1(9, "h_Gamma_Mass_S", "S - Invariant mass of gammas; mass (GeV/c^{2}); counts", 100, 0, 0.2);
  // gamma background
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_CosPoint_B", "B - Gamma Cosine pointing angle; mom (GeV/c); cos point. angle", pN, pMin, pMax, 50, 0, 0.1, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_DCA_B", "B - DCA between the gamma daughters; mom (GeV/c); dca (cm)", pN, pMin, pMax, 50, 0, 2, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_VtxR_B", "B - Radius of the gamma conversion vertex; mom (GeV/c); r (cm)", pN, pMin, pMax, 100, 0, 100, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_PP_B", "B - gamma psi pair angle; mom (GeV/c); psi pairangle (rad)", pN, pMin, pMax, 50, 0, 0.5, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_Chi2_B", "B - gamma Chi2/NDF; mom (GeV/c); Chi2/NDF", pN, pMin, pMax, 50, 0, 25, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_Sep_B", "B - gamma separation TPC-inner; mom (GeV/c); tracks separatin (cm)", pN, pMin, pMax, 100, 0, 50, 0);
  //
  fQAmc->CreateTH2Fvector1(2, "h_cut_Gamma_SepR_B", "S - gamma separation TPC-inner; radius cm; tracks separatin (cm)", 20, 0, 100, 100, 0, 20);
  fQAmc->CreateTH1Fvector1(9, "h_Gamma_Mass_B", "B - Invariant mass of gammas; mass (GeV/c^{2}); counts", 100, 0, 0.2);  
 
  // kaons signal
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_CosPoint_S", "S - K0 Cosine pointing angle; mom (GeV/c); cos point. angle", pN, pMin, pMax, 50, 0, 0.1, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_DCA_S", "S - DCA between the K0 daughters; mom (GeV/c); dca (cm)", pN, pMin, pMax, 50, 0, 2, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_VtxR_S", "S - Radius of the K0 decay vertex; mom (GeV/c); r (cm)", pN, pMin, pMax, 50, 0, 100, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_Chi2_S", "S - K0 Chi2/NDF; mom (GeV/c); Chi2/NDF", pN, pMin, pMax, 50, 0, 25, 0);

  fQAmc->CreateTH1Fvector1(5, "h_K0_Mass_S", "S - Invariant mass of K0; mass (GeV/c^{2}); counts", 125, 0.45, 0.55);
  // kaons background
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_CosPoint_B", "B - K0 Cosine pointing angle; mom (GeV/c); cos point. angle", pN, pMin, pMax, 50, 0, 0.1, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_DCA_B", "B - DCA between the K0 daughters; mom (GeV/c); dca (cm)", pN, pMin, pMax, 50, 0, 2, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_VtxR_B", "B - Radius of the K0 decay vertex; mom (GeV/c); r (cm)", pN, pMin, pMax, 50, 0, 100, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_K0_Chi2_B", "B - K0 Chi2/NDF; mom (GeV/c); Chi2/NDF", pN, pMin, pMax, 50, 0, 50, 0);

  fQAmc->CreateTH1Fvector1(5, "h_K0_Mass_B", "B - Invariant mass of K0; mass (GeV/c^{2}); counts", 125, 0.45, 0.55);

  // lambda signal
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_CosPoint_S", "S - L Cosine pointing angle; mom (GeV/c); cos point. angle", pN, pMin, pMax, 50, 0, 0.1, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_DCA_S", "S - DCA between the L daughters; mom (GeV/c); dca (cm)", pN, pMin, pMax, 50, 0, 2, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_VtxR_S", "S - Radius of the L decay vertex; mom (GeV/c); r (cm)", pN, pMin, pMax, 50, 0, 100, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_Chi2_S", "S - L Chi2/NDF; mom (GeV/c); Chi2/NDF", pN, pMin, pMax, 50, 0, 50, 0);

  fQAmc->CreateTH1Fvector1(5, "h_L_Mass_S", "S - Invariant mass of L; mass (GeV/c^{2}); counts", 60, 1.1, 1.13);
  fQAmc->CreateTH1Fvector1(5, "h_AL_Mass_S", "S - Invariant mass of anti L; mass (GeV/c^{2}); counts", 60, 1.1, 1.13);
  // lambda background
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_CosPoint_B", "B - L Cosine pointing angle; mom (GeV/c); cos point. angle", pN, pMin, pMax, 50, 0, 0.1, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_DCA_B", "B - DCA between the L daughters; mom (GeV/c); dca (cm)", pN, pMin, pMax, 50, 0, 2, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_VtxR_B", "B - Radius of the L decay vertex; mom (GeV/c); r (cm)", pN, pMin, pMax, 50, 0, 100, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_Chi2_B", "B - L Chi2/NDF; mom (GeV/c); Chi2/NDF", pN, pMin, pMax, 50, 0, 50, 0);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_rdp_v_mp_S", "S - relative L daughter mom -v- mother mom; L mom (GeV/c); relative daughter mom p2/p1", 100, 0.1, 10, 100, 0, 1);
  fQAmc->CreateTH2Fvector1(2, "h_cut_L_rdp_v_mp_B", "B - relative L daughter mom -v- mother mom; L mom (GeV/c); relative daughter mom p2/p1", 100, 0.1, 10, 100, 0, 1);
  fQAmc->CreateTH1Fvector1(5, "h_LAL_Mass_B", "B - Invariant mass of anti L; mass (GeV/c^{2}); counts", 60, 1.1, 1.13);


  // MC tagged daughter track momentum distribution after each cut step
//   fQAmc->CreateTH1Fvector1(10, "h_electron_p_S", "h_electron_p_S", 20, 0.1, 20, 0);
//   fQAmc->CreateTH1Fvector1(10, "h_K0pion_p_S", "h_K0pion_p_S", 20, 0.1, 20, 0);
//   fQAmc->CreateTH1Fvector1(10, "h_Lpion_p_S", "h_Lpion_p_S", 20, 0.1, 20, 0);
//   fQAmc->CreateTH1Fvector1(10, "h_proton_p_S", "h_proton_p_S", 20, 0.1, 20, 0);

  // V0 momnetum distribution of MC tagged signal and backglound after all cuts
  fQAmc->CreateTH1F("h_gamma_p_S", "true gammas after all cuts", 20, 0.1, 10, 0);
  fQAmc->CreateTH1F("h_gamma_p_B", "true gamma BG after all cuts", 20, 0.1, 10, 0);
  fQAmc->CreateTH1F("h_K0_p_S", "true K0s after all cuts", 20, 0.1, 10, 0);
  fQAmc->CreateTH1F("h_K0_p_B", "true K0 BG after all cuts", 20, 0.1, 10, 0);
  fQAmc->CreateTH1F("h_lambda_p_S", "MC true lambdas after all cuts", 20, 0.1, 10, 0);
  fQAmc->CreateTH1F("h_lambda_p_B", "MC true lambda BG after all cuts", 20, 0.1, 10, 0);
  fQAmc->CreateTH1F("h_alambda_p_S", "MC true anti-lambdas after all cuts", 20, 0.1, 10, 0);
  fQAmc->CreateTH1F("h_alambda_p_B", "MC true anti-lambda BG after all cuts", 20, 0.1, 10, 0);  

  // invariant mass ditributions for the V0 for different hypoteses (gamma, K0, L, AL)
  fQAmc->CreateTH1F("h_Mass_gamma_as_K0","h_Mass_gamma_as_K0", 200, 0, 2);
  fQAmc->CreateTH1F("h_Mass_gamma_as_L","h_Mass_gamma_as_L", 200, 0, 2);
  fQAmc->CreateTH1F("h_Mass_K0_as_G", "h_Mass_K0_as_gamma", 200, 0, 2);
  fQAmc->CreateTH1F("h_Mass_K0_as_L", "h_Mass_K0_as_Lambda", 200, 0, 2);
  fQAmc->CreateTH1F("h_Mass_L_as_G", "h_Mass_L_as_gamma", 200, 0, 2);
  fQAmc->CreateTH1F("h_Mass_L_as_K0", "h_Mass_L_as_K0", 200, 0, 2);

  // Invariant mass distribution of MC tagged signal for diffrent momenta
  fQAmc->CreateTH2F("h_gamma_MvP_S", "mc tagged gammas - signal; p (GeV/c); m (GeV/c^{2})", 12, 0.1, 20, 100, 0., 0.1, 0);
  fQAmc->CreateTH2F("h_K0_MvP_S", "mc tagged K0s - signal; p (GeV/c); m (GeV/c^{2})", 12, 0.1, 20, 100, 0.45, 0.55, 0);
  fQAmc->CreateTH2F("h_lambda_MvP_S", "mc tagged Lambdas - signal; p (GeV/c); m (GeV/c^{2})", 12, 0.1, 20, 100, 1.08, 1.14, 0);
    
  // electrons
  fQAmc->CreateTH1Fvector1(8, "h_Electron_P_S", "MC-S momenta of conversion electrons -cuts-; P (GeV/c); counts", 20, 0.1, 20, 0);
  fQAmc->CreateTH1Fvector1(8, "h_Electron_P_B", "MC-B momenta of conversion electrons -cuts-; P (GeV/c); counts", 20, 0.1, 20, 0);

  // K0 pions
  fQAmc->CreateTH1Fvector1(7, "h_PionK0_P_S", "MC-S momenta of K0 pions -cuts-; P (GeV/c) counts;", 20, 0.1, 20, 0);
  fQAmc->CreateTH1Fvector1(7, "h_PionK0_P_B", "MC-B momenta of K0 pions -cuts-; P (GeV/c) counts;", 20, 0.1, 20, 0);
  
  // L pions
  fQAmc->CreateTH1Fvector1(8, "h_PionL_P_S", "MC-S momenta of L pions -cuts-; P (GeV/c) counts;", 20, 0.1, 50, 0);
  fQAmc->CreateTH1Fvector1(8, "h_PionL_P_B", "MC-B momenta of L pions -cuts-; P (GeV/c) counts;", 20, 0.1, 50, 0);
  
  // L protons
  fQAmc->CreateTH1Fvector1(8, "h_ProtonL_P_S", "MC-S momenta of L protons -cuts-; P (GeV/c) counts;", 20, 0.1, 20, 0);    
  fQAmc->CreateTH1Fvector1(8, "h_ProtonL_P_B", "MC-B momenta of L protons -cuts-; P (GeV/c) counts;", 20, 0.1, 20, 0);    



  // cut efficiencies 
}
//________________________________________________________________
Bool_t AliHFEV0cuts::TrackCutsCommon(AliESDtrack* track){
  //
  // singe track cuts commom for all particle candidates
  //

  if(!track) return kFALSE;
 
  
  // status word
  ULong_t status = track->GetStatus();


  // No. of TPC clusters
  fQA->Fill("h_ST_NclsTPC", track->GetTPCNcls());
  if(track->GetTPCNcls() < 1) return kFALSE;   //

  // TPC refit
  if((status & AliESDtrack::kTPCrefit)){
    fQA->Fill("h_ST_TPCrefit", 1);
  }
  if(!(status & AliESDtrack::kTPCrefit)){
    fQA->Fill("h_ST_TPCrefit", 0);
    return kFALSE;
  }

  // Chi2 per TPC cluster
  Int_t nTPCclusters = track->GetTPCclusters(0);
  Float_t chi2perTPCcluster = track->GetTPCchi2()/Float_t(nTPCclusters);
  fQA->Fill("h_ST_chi2TPCcls", chi2perTPCcluster);
  if(chi2perTPCcluster > 4.0) return kFALSE;   // 4.0

  // TPC cluster ratio
  Float_t cRatioTPC = track->GetTPCNclsF() > 0. ? static_cast<Float_t>(track->GetTPCNcls())/static_cast<Float_t> (track->GetTPCNclsF()) : 1.;
  fQA->Fill("h_ST_TPCclsR", cRatioTPC);
  if(cRatioTPC < 0.6) return kFALSE;

  // kinks
  fQA->Fill("h_ST_kinks", track->GetKinkIndex(0));
  if(track->GetKinkIndex(0) != 0) return kFALSE;

  // pt
  fQA->Fill("h_ST_pt",track->Pt());
  //if(track->Pt() < 0.1 || track->Pt() > 100) return kFALSE; //

  // eta
  fQA->Fill("h_ST_eta", track->Eta());
  //if(TMath::Abs(track->Eta()) > 0.9) return kFALSE;  

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

  AliESDtrack* dN, *dP; 
 
  dP = dynamic_cast<AliESDtrack *>(fInputEvent->GetTrack(v0->GetPindex()));
  dN = dynamic_cast<AliESDtrack *>(fInputEvent->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;
}
//________________________________________________________________
Bool_t AliHFEV0cuts::GammaCuts(AliESDv0 *v0){
  //
  // gamma cuts 
  //
  
  if(!v0) return kFALSE;

  if(fMCEvent){
    if(1 == fCurrentV0id){
      fQAmc->Fill("h_Mass_gamma_as_K0",  v0->GetEffMass(2, 2));
      fQAmc->Fill("h_Mass_gamma_as_L",  v0->GetEffMass(2, 4));
      fQAmc->Fill("h_Mass_gamma_as_L",  v0->GetEffMass(4, 2));
    }
  }

  AliVTrack* daughter[2];
  Int_t pIndex = 0, nIndex = 0;
  if(CheckSigns(v0)){
    pIndex = v0->GetPindex();
    nIndex = v0->GetNindex();
  }
  else{
    pIndex = v0->GetNindex();
    nIndex = v0->GetPindex();    
  }
  daughter[0] = dynamic_cast<AliVTrack *>(fInputEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(fInputEvent->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;
  
  // production vertex is set in the 'CreateMotherParticle' function
  //kfMother->SetMassConstraint(0, 0.001);

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

  Float_t iMass = v0->GetEffMass(0, 0);
  Float_t iP = v0->P();
  Float_t p[2] = {static_cast<Float_t>(d[0]->GetP()), static_cast<Float_t>(d[1]->GetP())};

  // Cut values
  const Double_t cutChi2NDF = 1.5;              // ORG [7.]  
  const Double_t cutCosPoint[2] = {0., 0.007};  // ORG [0., 0.02]
  const Double_t cutDCA[2] = {0., 0.25};       // ORG [0., 0.25]
  const Double_t cutProdVtxR[2] = {6., 90.};   // ORG [3., 90]
  const Double_t cutPsiPair[2] = {0., 0.05};   // ORG [0. 0.05]
  // mass cut
  const Double_t cutMass = 0.05;               // ORG [0.05]

  //
  // possible new cuts
  //
  // separation cut at the entrance to the TPC
  const Double_t cutSeparation = 1.;          // ORG 3.0 cm



  // Values
   
  // 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; 

  // Separation
  AliExternalTrackParam const *param[2];
  param[0] = d[0]->GetInnerParam();
  param[1] = d[1]->GetInnerParam();
  Double_t sep = 999.;
  if(param[0] && param[1]){
    TVector3 xyz[3];
    xyz[0].SetXYZ(param[0]->GetX(), param[0]->GetY(), param[0]->GetZ());
    xyz[1].SetXYZ(param[1]->GetX(), param[1]->GetY(), param[1]->GetZ());
    xyz[2] = xyz[0] - xyz[1];
    sep = xyz[2].Mag();
  }


 
  //
  // Apply the cuts, produce QA plots (with mass cut)
  //
  fQA->Fill("h_Gamma_Mass", 0, iMass);
  
  // MC
  if(fMCEvent){
    if(1 == fCurrentV0id){
      fQAmc->Fill("h_Gamma_Mass_S", 0, iMass);
      fQAmc->Fill("h_gamma_MvP_S", iP, iMass);
    }
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_B", 0, iMass);
  }
  // cut distributions
  if(iMass < cutMass){
    fQA->Fill("h_Electron_P", 0, p[0]);
    fQA->Fill("h_Electron_P", 0, p[1]);
    fQA->Fill("h_cut_Gamma_CosPoint", 0, cosPoint);
    fQA->Fill("h_cut_Gamma_DCA", 0, dca);
    fQA->Fill("h_cut_Gamma_VtxR_old", 0, r);
    fQA->Fill("h_cut_Gamma_VtxR", 0, r2);
    fQA->Fill("h_cut_Gamma_PP", 0, psiPair);
    fQA->Fill("h_cut_Gamma_Chi2", 0, chi2ndf);
    fQA->Fill("h_cut_Gamma_Chi2", 1, chi2ndf, iP);
    fQA->Fill("h_cut_Gamma_Sep", 0, iP, sep);
	
   
    if(fMCEvent){
      // MC signal
      if(1 == fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_CosPoint_S", 0, iP, cosPoint);
	fQAmc->Fill("h_cut_Gamma_DCA_S", 0, iP, dca);
	fQAmc->Fill("h_cut_Gamma_VtxR_S", 0, iP, r2);
	fQAmc->Fill("h_cut_Gamma_PP_S", 0, iP, psiPair);
	fQAmc->Fill("h_cut_Gamma_Chi2_S", 0, iP, chi2ndf);
	fQAmc->Fill("h_cut_Gamma_Chi2_S", 1, iP, chi2ndf);
	fQAmc->Fill("h_cut_Gamma_Sep_S", 0, iP, sep);
	fQAmc->Fill("h_cut_Gamma_SepR_S", 0,r2, sep);
	fQAmc->Fill("h_Electron_P_S", 0, p[0]);
	fQAmc->Fill("h_Electron_P_S", 0, p[1]);
      }
      // MC background
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_CosPoint_B", 0, iP, cosPoint);
	fQAmc->Fill("h_cut_Gamma_DCA_B", 0, iP, dca);
	fQAmc->Fill("h_cut_Gamma_VtxR_B", 0, iP, r2);
	fQAmc->Fill("h_cut_Gamma_PP_B", 0, iP, psiPair);
	fQAmc->Fill("h_cut_Gamma_Chi2_B", 0, iP, chi2ndf);
	fQAmc->Fill("h_cut_Gamma_Chi2_B", 1, iP, chi2ndf);
	fQAmc->Fill("h_cut_Gamma_Sep_B", 0, iP, sep);
	fQAmc->Fill("h_cut_Gamma_SepR_B", 0,r2, sep);
	fQAmc->Fill("h_Electron_P_B", 0, p[0]);
	fQAmc->Fill("h_Electron_P_B", 0, p[1]);	
      }
    }
  }


  //
  // Chi2/NDF cut
  //
  if(chi2ndf > cutChi2NDF) return kFALSE;
  fQA->Fill("h_Gamma_Mass", 1, iMass);
  if(iMass < cutMass){
    fQA->Fill("h_cut_Gamma_CosPoint", 1, cosPoint);
    fQA->Fill("h_Electron_P", 1, p[0]);
    fQA->Fill("h_Electron_P", 1, p[1]);
  }
  if(fMCEvent){
    if(1 == fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_S", 1, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_B", 1, iMass);
    if(iMass < cutMass){
      if(1 == fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_CosPoint_S", 1, iP, cosPoint);
	fQAmc->Fill("h_Electron_P_S", 1, p[0]);
	fQAmc->Fill("h_Electron_P_S", 1, p[1]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_CosPoint_B", 1, iP, cosPoint);
	fQAmc->Fill("h_Electron_P_B", 1, p[0]);
	fQAmc->Fill("h_Electron_P_B", 1, p[1]);
      }
    }
  }

  //
  // Cos point cut
  //
  if(cosPoint < cutCosPoint[0] || cosPoint > cutCosPoint[1]) return kFALSE;
  fQA->Fill("h_Gamma_Mass", 2, iMass);
  if(iMass < cutMass){
    fQA->Fill("h_Electron_P", 2, p[0]);
    fQA->Fill("h_Electron_P", 2, p[1]);
    fQA->Fill("h_cut_Gamma_DCA", 1, dca);
  }
  if(fMCEvent){
    if(1 == fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_S", 2, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_B", 2, iMass);
    if(iMass < cutMass){
      if(1 == fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_DCA_S", 1, iP, dca);
	fQAmc->Fill("h_Electron_P_S", 2, p[0]);
	fQAmc->Fill("h_Electron_P_S", 2, p[1]);

      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_DCA_B", 1, iP, dca);
	fQAmc->Fill("h_Electron_P_B", 2, p[0]);
	fQAmc->Fill("h_Electron_P_B", 2, p[1]);

      }
    }
  }
  
  //
  // DCA cut
  //
  if(dca < cutDCA[0] || dca > cutDCA[1]) return kFALSE;
  fQA->Fill("h_Gamma_Mass", 3, iMass);
  if(iMass < cutMass){
    fQA->Fill("h_Electron_P", 3, p[0]);
    fQA->Fill("h_Electron_P", 3, p[1]);
    fQA->Fill("h_cut_Gamma_VtxR_old", 1, r);
    fQA->Fill("h_cut_Gamma_VtxR", 1, r2);
  }
  if(fMCEvent){
    if(1 == fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_S", 3, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_B", 3, iMass);
    if(iMass < cutMass){
      if(1 == fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_VtxR_S", 1, iP, r2);
	fQAmc->Fill("h_Electron_P_S", 3, p[0]);
	fQAmc->Fill("h_Electron_P_S", 3, p[1]);

      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_VtxR_B", 1, iP, r2);
	fQAmc->Fill("h_Electron_P_B", 3, p[0]);
	fQAmc->Fill("h_Electron_P_B", 3, p[1]);	
      }
    }
  }

  //
  // Vertex radius cut
  //
  if(r < cutProdVtxR[0] || r > cutProdVtxR[1]) return kFALSE;
  fQA->Fill("h_Gamma_Mass", 4, iMass);
  if(iMass < cutMass){
    fQA->Fill("h_cut_Gamma_PP", 1, psiPair);
    fQA->Fill("h_Electron_P", 4, p[0]);
    fQA->Fill("h_Electron_P", 4, p[1]);
  }
  if(fMCEvent){
    if(1 == fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_S", 4, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_B", 4, iMass);
    if(iMass < cutMass){
      if(1 == fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_PP_S", 1, iP, psiPair);
	fQAmc->Fill("h_Electron_P_S", 4, p[0]);
	fQAmc->Fill("h_Electron_P_S", 4, p[1]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_PP_B", 1, iP, psiPair);
	fQAmc->Fill("h_Electron_P_B", 4, p[0]);
	fQAmc->Fill("h_Electron_P_B", 4, p[1]);
      }
    }
  }


  //
  // PsiPair cut
  //
  if(psiPair < cutPsiPair[0] || psiPair > cutPsiPair[1]) return kFALSE;
  fQA->Fill("h_Gamma_Mass", 5, iMass);
  if(iMass < cutMass){
    fQA->Fill("h_cut_Gamma_Sep", 1, iP, sep);
    fQA->Fill("h_Electron_P", 5, p[0]);
    fQA->Fill("h_Electron_P", 5, p[1]);
  }
  if(fMCEvent){
    if(1 == fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_S", 5, iMass);
    else if(-2 != fCurrentV0id)fQAmc->Fill("h_Gamma_Mass_B", 5, iMass);
    
    if(iMass < cutMass){
      if(1 == fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_Sep_S", 1, iP, sep);
	fQAmc->Fill("h_cut_Gamma_SepR_S", 1,r2, sep);
	fQAmc->Fill("h_Electron_P_S", 5, p[0]);
	fQAmc->Fill("h_Electron_P_S", 5, p[1]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_Gamma_Sep_B", 1, iP, sep);
	fQAmc->Fill("h_cut_Gamma_SepR_B", 1,r2, sep);
	fQAmc->Fill("h_Electron_P_B", 5, p[0]);
	fQAmc->Fill("h_Electron_P_B", 5, p[1]);
      }
    }
  }


  // TESTING NEW CUT
  //
  // distance of the tracks at the entrance of the TPC
  //
  if(sep < cutSeparation) return kFALSE;
  fQA->Fill("h_Gamma_Mass", 6, iMass);
  if(iMass < cutMass){
    fQA->Fill("h_Electron_P", 6, p[0]);
    fQA->Fill("h_Electron_P", 6, p[1]);
  }
  if(fMCEvent){
    if(1 == fCurrentV0id) fQAmc->Fill("h_Gamma_Mass_S", 6, iMass);
    else if(-2 != fCurrentV0id)fQAmc->Fill("h_Gamma_Mass_B", 6, iMass);
    
    if(iMass < cutMass){
      if(1 == fCurrentV0id){
	fQAmc->Fill("h_Electron_P_S", 6, p[0]);
	fQAmc->Fill("h_Electron_P_S", 6, p[1]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_Electron_P_B", 6, p[0]);
	fQAmc->Fill("h_Electron_P_B", 6, p[1]);
      }
    }
  }
  
  // .. test
 

  if(iMass > cutMass) return kFALSE;

  // all cuts passed

  
  // some MC stuff
  //printf("**D: gamma V0id: %i, P: %i, N: %i \n", fCurrentV0id, fPdaughterPDG, fNdaughterPDG);
  if(1 == fCurrentV0id){
    fQAmc->Fill("h_gamma_p_S", iP);
    fQAmc->Fill("h_Electron_P_S", 7, p[0]);
    fQAmc->Fill("h_Electron_P_S", 7, p[1]);
  }
  else if (-2 != fCurrentV0id){
    fQAmc->Fill("h_gamma_p_B", iP);
    fQAmc->Fill("h_Electron_P_B", 7, p[0]);
    fQAmc->Fill("h_Electron_P_B", 7, p[1]);
  }


  return kTRUE;
}
//________________________________________________________________
Bool_t AliHFEV0cuts::K0Cuts(AliESDv0 *v0){
  //
  // K0 cuts
  //

  if(!v0) return kFALSE;

  if(fMCEvent){
    if(2 == fCurrentV0id){
      fQAmc->Fill("h_Mass_K0_as_G",  v0->GetEffMass(0, 0));
      fQAmc->Fill("h_Mass_K0_as_L",  v0->GetEffMass(2, 4));
      fQAmc->Fill("h_Mass_K0_as_L",  v0->GetEffMass(4, 2));
    }
  }

  //const Double_t cK0mass=TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();  // PDG K0s mass
  AliVTrack* daughter[2];
  Int_t pIndex = 0, nIndex = 0;
  if(CheckSigns(v0)){
    pIndex = v0->GetPindex();
    nIndex = v0->GetNindex();
  }
  else{
    pIndex = v0->GetNindex();
    nIndex = v0->GetPindex();    
  }
 
  daughter[0] = dynamic_cast<AliVTrack *>(fInputEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(fInputEvent->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;
  // production vertex is set in the 'CreateMotherParticle' function
  //kfMother->SetMassConstraint(cK0mass, 0.);
  
  AliESDtrack* d[2];
  d[0] = dynamic_cast<AliESDtrack*>(fInputEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fInputEvent->GetTrack(nIndex));

  Float_t iMass = v0->GetEffMass(2, 2);
  Float_t iP = v0->P();
  Float_t p[2] = {static_cast<Float_t>(d[0]->GetP()), static_cast<Float_t>(d[1]->GetP())};
  Double_t theta = v0->Theta();
  Double_t phi = v0->Phi();
  Double_t pt = v0->Pt();
  Double_t data[4] = {0., 0., 0., 0.};

  // Cut values
  const Double_t cutChi2NDF = 2.;              // ORG [7.]
  const Double_t cutCosPoint[2] = {0., 0.02};  // ORG [0., 0.03]
  const Double_t cutDCA[2] = {0., 0.2};        // ORG [0., 0.1]
  const Double_t cutProdVtxR[2] = {2.0, 30.};   // ORG [0., 8.1]
  const Double_t cutMass[2] = {0.486, 0.508};   // ORG [0.485, 0.51]
  // Values

  // 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, produce QA plots (with mass cut)
  //

  fQA->Fill("h_K0_Mass", 0, iMass);
  // MC
  if(fMCEvent){
    if(2 == fCurrentV0id){
      fQAmc->Fill("h_K0_Mass_S", 0, iMass);
      fQAmc->Fill("h_K0_MvP_S", iP, iMass);
    }
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_K0_Mass_B", 0, iMass);
  }

  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_PionK0_P", 0, p[0]);
    fQA->Fill("h_PionK0_P", 0, p[1]);
    fQA->Fill("h_cut_K0_CosPoint", 0, cosPoint);
    fQA->Fill("h_cut_K0_DCA", 0, dca);
    fQA->Fill("h_cut_K0_VtxR", 0, r);
    fQA->Fill("h_cut_K0_Chi2", 0, chi2ndf);
    fQA->Fill("h_cut_K0_Chi2", 1, chi2ndf);
  }
  
  // MC
  if(fMCEvent){
    if(iMass > cutMass[0] && iMass < cutMass[1]){   
      if(2 == fCurrentV0id){
	fQAmc->Fill("h_cut_K0_CosPoint_S", 0, iP, cosPoint);
	fQAmc->Fill("h_cut_K0_DCA_S", 0, iP, dca);
	fQAmc->Fill("h_cut_K0_VtxR_S", 0, iP, r);
	fQAmc->Fill("h_cut_K0_Chi2_S", 0, iP, chi2ndf);
	fQAmc->Fill("h_cut_K0_Chi2_S", 1, iP, chi2ndf);
	fQAmc->Fill("h_PionK0_P_S", 0, p[0]);
	fQAmc->Fill("h_PionK0_P_S", 0, p[1]);
       }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_K0_CosPoint_B", 0, iP, cosPoint);
	fQAmc->Fill("h_cut_K0_DCA_B", 0, iP, dca);
	fQAmc->Fill("h_cut_K0_VtxR_B", 0, iP, r);
	fQAmc->Fill("h_cut_K0_Chi2_B", 0, iP, chi2ndf);
	fQAmc->Fill("h_cut_K0_Chi2_B", 1, iP, chi2ndf);
	fQAmc->Fill("h_PionK0_P_B", 0, p[0]);
	fQAmc->Fill("h_PionK0_P_B", 0, p[1]);
      }  
    }
  }

  //
  // Chi2/NDF cut
  //
  if(chi2ndf > cutChi2NDF) return kFALSE;
  fQA->Fill("h_K0_Mass", 1, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_cut_K0_CosPoint", 1, cosPoint);
    fQA->Fill("h_PionK0_P", 1, p[0]);
    fQA->Fill("h_PionK0_P", 1, p[1]);
  }  
  if(fMCEvent){
    if(2 == fCurrentV0id) fQAmc->Fill("h_K0_Mass_S", 1, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_K0_Mass_B", 1, iMass);
     if(iMass > cutMass[0] && iMass < cutMass[1]){
       if(2 == fCurrentV0id){
	 fQAmc->Fill("h_cut_K0_CosPoint_S", 1, iP, cosPoint);
	 fQAmc->Fill("h_PionK0_P_S", 1, p[0]);
	 fQAmc->Fill("h_PionK0_P_S", 1, p[1]);
       }
       else if(-2 != fCurrentV0id){
	 fQAmc->Fill("h_cut_K0_CosPoint_B", 1, iP, cosPoint);
	 fQAmc->Fill("h_PionK0_P_B", 1, p[0]);
	 fQAmc->Fill("h_PionK0_P_B", 1, p[1]);
       }
     }
  }

  //
  // Cos point cut
  //
  if(cosPoint < cutCosPoint[0] || cosPoint > cutCosPoint[1]) return kFALSE;
  fQA->Fill("h_K0_Mass", 2, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_PionK0_P", 2, p[0]);
    fQA->Fill("h_PionK0_P", 2, p[1]);
    fQA->Fill("h_cut_K0_DCA", 1, dca);
  }
  if(fMCEvent){
    if(2 == fCurrentV0id) fQAmc->Fill("h_K0_Mass_S", 2, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_K0_Mass_B", 2, iMass);
     if(iMass > cutMass[0] && iMass < cutMass[1]){
       if(2 == fCurrentV0id){
	 fQAmc->Fill("h_cut_K0_DCA_S", 1, iP, dca);
	 fQAmc->Fill("h_PionK0_P_S", 2, p[0]);
	 fQAmc->Fill("h_PionK0_P_S", 2, p[1]);
       }
       else if(-2 != fCurrentV0id){
	 fQAmc->Fill("h_cut_K0_DCA_B", 1, iP, dca);
	 fQAmc->Fill("h_PionK0_P_B", 2, p[0]);
	 fQAmc->Fill("h_PionK0_P_B", 2, p[1]);
       }
     }
  }
  

  //
  // DCA cut
  //
  if(dca < cutDCA[0] || dca > cutDCA[1]) return kFALSE;
  fQA->Fill("h_K0_Mass", 3, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_PionK0_P", 3, p[0]);
    fQA->Fill("h_PionK0_P", 3, p[1]);
    fQA->Fill("h_cut_K0_VtxR", 1, r);
  }
  if(fMCEvent){
    if(2 == fCurrentV0id) fQAmc->Fill("h_K0_Mass_S", 3, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_K0_Mass_B", 3, iMass);
     if(iMass > cutMass[0] && iMass < cutMass[1]){
       if(2 == fCurrentV0id){
	 fQAmc->Fill("h_cut_K0_VtxR_S", 1, iP, r);
	 fQAmc->Fill("h_PionK0_P_S", 3, p[0]);
	 fQAmc->Fill("h_PionK0_P_S", 3, p[1]);
       }
       else if(-2 != fCurrentV0id){
	 fQAmc->Fill("h_cut_K0_VtxR_B", 1, iP, r);
	 fQAmc->Fill("h_PionK0_P_B", 3, p[0]);
	 fQAmc->Fill("h_PionK0_P_B", 3, p[1]);
       }
     }
  }

  
  //
  // Vertex R cut
  //
  if(r < cutProdVtxR[0] || r > cutProdVtxR[1]) return kFALSE;
  fQA->Fill("h_K0_Mass", 4, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_PionK0_P", 4, p[0]);
    fQA->Fill("h_PionK0_P", 4, p[1]);
  }
  if(fMCEvent){
    if(2 == fCurrentV0id) fQAmc->Fill("h_K0_Mass_S", 4, iMass);
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_K0_Mass_B", 4, iMass);
     if(iMass > cutMass[0] && iMass < cutMass[1]){
       if(2 == fCurrentV0id){
	 fQAmc->Fill("h_PionK0_P_S", 4, p[0]);
	 fQAmc->Fill("h_PionK0_P_S", 4, p[1]);
       }
       else if(-2 != fCurrentV0id){
	 fQAmc->Fill("h_PionK0_P_B", 4, p[0]);
	 fQAmc->Fill("h_PionK0_P_B", 4, p[1]);
       }
     }
  }

  data[0] = iMass;
  data[1] = pt;
  data[2] = theta;
  data[3] = phi;
  //printf("-D: m: %f, pT: %f, theta: %f, phi: %f\n", invMass, mPt, theta, phi);
  fQA->Fill("hK0", data);
  

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

  // all cuts passed
  
  // some MC stuff
  if(2 == fCurrentV0id){
    fQAmc->Fill("h_K0_p_S", iP);
    fQAmc->Fill("h_PionK0_P_S", 5, p[0]);
    fQAmc->Fill("h_PionK0_P_S", 5, p[1]);
  }
  else if (-2 != fCurrentV0id){
    fQAmc->Fill("h_K0_p_B", iP);
    fQAmc->Fill("h_PionK0_P_B", 5, p[0]);
    fQAmc->Fill("h_PionK0_P_B", 5, p[1]);
  }

  return kTRUE;
}
//________________________________________________________________
Bool_t AliHFEV0cuts::LambdaCuts(AliESDv0 *v0, Bool_t &isLambda ){
  //
  // Lambda cuts - decision on Lambda - AntiLambda is taken too
  //
  // discrimination between lambda and antilambda - correlation of the following variables necessary:
  // - momentum of the proton AND momentum of the pion (proton momentum is allways larger)
  // - mass of the mother particle

  if(!v0) return kFALSE;

  if(fMCEvent){
    if(4 == fCurrentV0id){
      fQAmc->Fill("h_Mass_L_as_G",  v0->GetEffMass(0, 0));
      fQAmc->Fill("h_Mass_L_as_K0",  v0->GetEffMass(2, 0));
    }
  }

  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.};
  if(CheckSigns(v0)){
    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 *>(fInputEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliVTrack *>(fInputEvent->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;
  
  // production vertex is set in the 'CreateMotherParticle' function
  //kfMother[0]->SetMassConstraint(cL0mass, 0.);

  // Anti Lambda
  kfMother[1] = CreateMotherParticle(daughter[0], daughter[1], TMath::Abs(kPiPlus), TMath::Abs(kProton));
  if(!kfMother[1]) return kFALSE;
  // production vertex is set in the 'CreateMotherParticle' function
  //kfMother[1]->SetMassConstraint(cL0mass, 0.);

  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*>(fInputEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fInputEvent->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;
  fQA->Fill("h_L_checks", check[0]*1.0, check[1]*1.0);
 
  // if the two check do not agree
  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];

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

   // Cuts
  const Double_t cutChi2NDF = 2.;              // ORG [5.]
  const Double_t cutCosPoint[2] = {0., 0.01};  // ORG [0., 0.02]
  const Double_t cutDCA[2] = {0., 0.2};        // ORG [0., 0.2]
  const Double_t cutProdVtxR[2] = {2., 40.};   // ORG [0., 24.]
  const Double_t cutMass[2] = {1.11, 1.12};   // ORG [1.11, 1.12]
  // cundidate cuts
  // relative daughter momentum versusu mother momentum

  // compute the cut values
  
  // 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;
  }

  // proton - pion indices - based on MC truth
  // for background use the reconstructed indices
  Int_t ixMC[2] = {-1, -1}; // {proton, pion}
  if(fMCEvent){
    if(4 == fCurrentV0id){
      ixMC[0] = 0;
      ixMC[1] = 1;
    }
    else if(-4 == fCurrentV0id){
      ixMC[0] = 1;
      ixMC[1] = 0;
    }
    else{
      ixMC[0] = ix[0];
      ixMC[1] = ix[1];
    }
  }

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

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

  // Relative daughter momentum
  Double_t rP = (0 == check[0]) ? p[1]/p[0] : p[0]/p[1];
  

  //
  // Apply the cuts, produce QA plots (with mass cut)
  //
  
  (type == 0) ?   fQA->Fill("h_L_Mass", 0, iMass) :  fQA->Fill("h_AL_Mass", 0, iMass);

 

  // MC
  if(fMCEvent){
    if(4 == fCurrentV0id){
      fQAmc->Fill("h_L_Mass_S", 0, iMass);
      fQAmc->Fill("h_lambda_MvP_S", iP, iMass);
    }
    else if(-4 == fCurrentV0id){
      fQAmc->Fill("h_AL_Mass_S", 0, iMass);
      fQAmc->Fill("h_lambda_MvP_S", iP, iMass);
    }
    else if(-2 != fCurrentV0id) fQAmc->Fill("h_LAL_Mass_B", 0, iMass);
  }


  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_ProtonL_P", 0, p[ix[0]]);
    fQA->Fill("h_PionL_P", 0, p[ix[1]]);
    fQA->Fill("h_cut_L_Chi2", 0, chi2ndf);
    fQA->Fill("h_cut_L_Chi2", 1, chi2ndf);
    fQA->Fill("h_cut_L_CosPoint", 0, cosPoint);
    fQA->Fill("h_cut_L_DCA", 0, dca);
    fQA->Fill("h_cut_L_VtxR", 0, r);
    fQA->Fill("h_cut_L_rdp_v_mp", 0, iP, rP);
  }
  if(fMCEvent){
    if(iMass > cutMass[0] && iMass < cutMass[1]){
      if(4 == TMath::Abs(fCurrentV0id)){
	fQAmc->Fill("h_cut_L_Chi2_S", 0, iP, chi2ndf);
	fQAmc->Fill("h_cut_L_Chi2_S", 1, iP, chi2ndf);
	fQAmc->Fill("h_cut_L_CosPoint_S", 0, iP, cosPoint);
	fQAmc->Fill("h_cut_L_DCA_S", 0, iP, dca);
	fQAmc->Fill("h_cut_L_VtxR_S", 0, iP, r);
	fQAmc->Fill("h_cut_L_rdp_v_mp_S", 0, iP, rP);	
	fQAmc->Fill("h_ProtonL_P_S", 0, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_S", 0, p[ixMC[1]]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_L_Chi2_B", 0, iP, chi2ndf);
	fQAmc->Fill("h_cut_L_Chi2_B", 1, iP, chi2ndf);
	fQAmc->Fill("h_cut_L_CosPoint_B", 0, iP, cosPoint);
	fQAmc->Fill("h_cut_L_DCA_B", 0, iP, dca);
	fQAmc->Fill("h_cut_L_VtxR_B", 0, iP, r);
	fQAmc->Fill("h_cut_L_rdp_v_mp_B", 0, iP, rP);	
	fQAmc->Fill("h_ProtonL_P_B", 0, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_B", 0, p[ixMC[1]]);
      }
    }
  }
  //
  // Chi2/NDF cut
  //
  if(chi2ndf > cutChi2NDF) return kFALSE;
  (type == 0) ?   fQA->Fill("h_L_Mass", 1, iMass) :  fQA->Fill("h_AL_Mass", 1, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_cut_L_CosPoint", 1, cosPoint);
    fQA->Fill("h_ProtonL_P", 1, p[ix[0]]);
    fQA->Fill("h_PionL_P", 1, p[ix[1]]);
  }
  if(fMCEvent){
    if(4 == fCurrentV0id) fQAmc->Fill("h_L_Mass_S", 1, iMass);
    else if(-4 == fCurrentV0id)  fQAmc->Fill("h_AL_Mass_S", 1, iMass);
    else if(-2 != fCurrentV0id)  fQAmc->Fill("h_LAL_Mass_B", 1, iMass);
    if(iMass > cutMass[0] && iMass < cutMass[1]){
      if(4 == TMath::Abs(fCurrentV0id)){
	fQAmc->Fill("h_cut_L_CosPoint_S", 1, iP, cosPoint);
	fQAmc->Fill("h_ProtonL_P_S", 1, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_S", 1, p[ixMC[1]]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_L_CosPoint_B", 1, iP, cosPoint);
	fQAmc->Fill("h_ProtonL_P_B", 1, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_B", 1, p[ixMC[1]]);
      }
    }
  }

  //
  // Cos point cut
  //
  if(cosPoint < cutCosPoint[0] || cosPoint > cutCosPoint[1]) return kFALSE;
  (type == 0) ?   fQA->Fill("h_L_Mass", 2, iMass) :  fQA->Fill("h_AL_Mass", 2, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_ProtonL_P", 2, p[ix[0]]);
    fQA->Fill("h_PionL_P", 2, p[ix[1]]);
    fQA->Fill("h_cut_L_DCA", 1, dca);
  }
  if(fMCEvent){
    if(4 == fCurrentV0id) fQAmc->Fill("h_L_Mass_S", 2, iMass);
    else if(-4 == fCurrentV0id)  fQAmc->Fill("h_AL_Mass_S", 2, iMass);
    else if(-2 != fCurrentV0id)  fQAmc->Fill("h_LAL_Mass_B", 2, iMass);
    if(iMass > cutMass[0] && iMass < cutMass[1]){
      if(4 == TMath::Abs(fCurrentV0id)){
	fQAmc->Fill("h_cut_L_DCA_S", 1, iP, dca);
	fQAmc->Fill("h_ProtonL_P_S", 2, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_S", 2, p[ixMC[1]]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_L_DCA_B", 1, iP, dca);
	fQAmc->Fill("h_ProtonL_P_B", 2, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_B", 2, p[ixMC[1]]);
      }
    }
  }

  //
  // DCA cut
  //  
  if(dca < cutDCA[0] || dca > cutDCA[1]) return kFALSE;
  (type == 0) ?   fQA->Fill("h_L_Mass", 3, iMass) :  fQA->Fill("h_AL_Mass", 3, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_ProtonL_P", 3, p[ix[0]]);
    fQA->Fill("h_PionL_P", 3, p[ix[1]]);
    fQA->Fill("h_cut_L_VtxR", 1, r);
  }
  if(fMCEvent){
    if(4 == fCurrentV0id) fQAmc->Fill("h_L_Mass_S", 3, iMass);
    else if(-4 == fCurrentV0id)  fQAmc->Fill("h_AL_Mass_S", 3, iMass);
    else if(-2 != fCurrentV0id)  fQAmc->Fill("h_LAL_Mass_B", 3, iMass);
    if(iMass > cutMass[0] && iMass < cutMass[1]){
      if(4 == TMath::Abs(fCurrentV0id)){
	fQAmc->Fill("h_cut_L_VtxR_S", 1, iP, r);
	fQAmc->Fill("h_ProtonL_P_S", 3, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_S", 3, p[ixMC[1]]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_cut_L_VtxR_B", 1, iP, r);
	fQAmc->Fill("h_ProtonL_P_B", 3, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_B", 3, p[ixMC[1]]);
      }
    }
  }

  //
  // Vertex radius cut
  //
  if(r < cutProdVtxR[0] || r > cutProdVtxR[1]) return kFALSE;
  (type == 0) ?   fQA->Fill("h_L_Mass", 4, iMass) :  fQA->Fill("h_AL_Mass", 4, iMass);
  if(iMass > cutMass[0] && iMass < cutMass[1]){
    fQA->Fill("h_ProtonL_P", 4, p[ix[0]]);
    fQA->Fill("h_PionL_P", 4, p[ix[1]]);
  }
  if(fMCEvent){
    if(4 == fCurrentV0id) fQAmc->Fill("h_L_Mass_S", 4, iMass);
    else if(-4 == fCurrentV0id)  fQAmc->Fill("h_AL_Mass_S", 4, iMass);
    else if(-2 != fCurrentV0id)  fQAmc->Fill("h_LAL_Mass_B", 4, iMass);
    if(iMass > cutMass[0] && iMass < cutMass[1]){
      if(4 == TMath::Abs(fCurrentV0id)){
	fQAmc->Fill("h_ProtonL_P_S", 4, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_S", 4, p[ixMC[1]]);
      }
      else if(-2 != fCurrentV0id){
	fQAmc->Fill("h_ProtonL_P_B", 4, p[ixMC[0]]);
	fQAmc->Fill("h_PionL_P_B", 4, p[ixMC[1]]);
      }
    }
  }

  if(iMass < cutMass[0] || iMass > cutMass[1]) {
    return kFALSE;
  }

  // all cuts passed

  // assign the lambda type value: Lambda: kTRUE, Anti-Lambda: kFALSE
  isLambda = (0 == type) ? kTRUE : kFALSE;

  // some MC stuff
  if(4 == fCurrentV0id){
    fQAmc->Fill("h_lambda_p_S", iP);
  }
  else if(-4 == fCurrentV0id){
    fQAmc->Fill("h_alambda_p_S", iP);
  }
  else if (-2 != fCurrentV0id && 0 == type){
    fQAmc->Fill("h_lambda_p_B", iP);
  }
  else if(-2 != fCurrentV0id && 0 != type ){
    fQAmc->Fill("h_alambda_p_B", iP);
  }
  //
  if(fMCEvent){
    if(4 == TMath::Abs(fCurrentV0id)){
      fQAmc->Fill("h_ProtonL_P_S", 5, p[ixMC[0]]);
      fQAmc->Fill("h_PionL_P_S", 5, p[ixMC[1]]);
    }
    else if(-2 != fCurrentV0id){
      fQAmc->Fill("h_ProtonL_P_B", 5, p[ixMC[0]]);
      fQAmc->Fill("h_PionL_P_B", 5, p[ixMC[1]]);
    }
  }
  return kTRUE;
}
//________________________________________________________________
Double_t AliHFEV0cuts::OpenAngle(AliESDv0 const *v0){
  //
  // Opening angle between two daughter tracks
  //
  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 openAngle = TMath::ACos((mp[0]*mn[0] + mp[1]*mn[1] + mp[2]*mn[2])/(TMath::Sqrt(mp[0]*mp[0] + mp[1]*mp[1] + mp[2]*mp[2])*TMath::Sqrt(mn[0]*mn[0] + mn[1]*mn[1] + mn[2]*mn[2])));
  
  return TMath::Abs(openAngle);
}
//________________________________________________________________
Double_t AliHFEV0cuts::PsiPair(const AliESDv0 *v0) {
  //
  // Angle between daughter momentum plane and plane 
  // 

  if(!fInputEvent) return -1.;

  Float_t magField = fInputEvent->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 *>(fInputEvent->GetTrack(pIndex));
  daughter[1] = dynamic_cast<AliESDtrack *>(fInputEvent->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; 
}
//________________________________________________________________
AliKFParticle *AliHFEV0cuts::CreateMotherParticle(AliVTrack const *pdaughter, AliVTrack const *ndaughter, Int_t pspec, Int_t nspec){
  //
  // Creates a mother particle
  //
  AliKFParticle pkfdaughter(*pdaughter, pspec);
  AliKFParticle nkfdaughter(*ndaughter, nspec);
  
  // - check if the daughter particles are coming from the primary vertex
  // - check the number of tracks that take part in the creaton of primary vertex.
  //   important: after removeal of candidate tracks there must be at least 2 tracks left
  //   otherwise the primary vertex will be corrupted  
 
  
  // Create the mother particle 
  AliKFParticle *m = new AliKFParticle(pkfdaughter, nkfdaughter);
  // important !!!
  m->SetField(fInputEvent->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{
    AliError("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
  // Sourse: Sergey Gorbunov

  return m;
}
//___________________________________________________________________
void  AliHFEV0cuts::Armenteros(const AliESDv0 *v0, Float_t val[2]){
  //
  // 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 AliHFEV0cuts::CheckSigns(AliESDv0 const *v0){
  //
  // 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*>(fInputEvent->GetTrack(pIndex));
  d[1] = dynamic_cast<AliESDtrack*>(fInputEvent->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;
    //v0->SetIndex(0, pIndex);  // set the index of the negative v0 track
    //v0->SetIndex(1, nIndex);  // set the index of the positive v0 track
  }
  else{
    correct = kTRUE;
  }
  
  //pIndex = v0->GetPindex();
  //nIndex = v0->GetNindex();
  //printf("-D2: P: %i, N: %i\n", pIndex, nIndex);

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

  const Double_t b = fInputEvent->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 AliHFEV0cuts::GetHelixCenter(AliESDtrack * const track, Double_t b,Int_t charge, Double_t center[2]){
  // see header file for documentation
  
  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;
    }

    if(charge < 0){
      xpoint =  xpoint;
      ypoint =  ypoint;
    }
  }
  if(b>0){
    if(charge > 0){
      xpoint =  xpoint;
      ypoint =  ypoint;
    }

    if(charge < 0){
      xpoint = - xpoint;
      ypoint = - ypoint;
    }
  }
  center[0] =  xpos + xpoint;
  center[1] =  ypos + ypoint;

  return 1;
}
 AliHFEV0cuts.cxx:1
 AliHFEV0cuts.cxx:2
 AliHFEV0cuts.cxx:3
 AliHFEV0cuts.cxx:4
 AliHFEV0cuts.cxx:5
 AliHFEV0cuts.cxx:6
 AliHFEV0cuts.cxx:7
 AliHFEV0cuts.cxx:8
 AliHFEV0cuts.cxx:9
 AliHFEV0cuts.cxx:10
 AliHFEV0cuts.cxx:11
 AliHFEV0cuts.cxx:12
 AliHFEV0cuts.cxx:13
 AliHFEV0cuts.cxx:14
 AliHFEV0cuts.cxx:15
 AliHFEV0cuts.cxx:16
 AliHFEV0cuts.cxx:17
 AliHFEV0cuts.cxx:18
 AliHFEV0cuts.cxx:19
 AliHFEV0cuts.cxx:20
 AliHFEV0cuts.cxx:21
 AliHFEV0cuts.cxx:22
 AliHFEV0cuts.cxx:23
 AliHFEV0cuts.cxx:24
 AliHFEV0cuts.cxx:25
 AliHFEV0cuts.cxx:26
 AliHFEV0cuts.cxx:27
 AliHFEV0cuts.cxx:28
 AliHFEV0cuts.cxx:29
 AliHFEV0cuts.cxx:30
 AliHFEV0cuts.cxx:31
 AliHFEV0cuts.cxx:32
 AliHFEV0cuts.cxx:33
 AliHFEV0cuts.cxx:34
 AliHFEV0cuts.cxx:35
 AliHFEV0cuts.cxx:36
 AliHFEV0cuts.cxx:37
 AliHFEV0cuts.cxx:38
 AliHFEV0cuts.cxx:39
 AliHFEV0cuts.cxx:40
 AliHFEV0cuts.cxx:41
 AliHFEV0cuts.cxx:42
 AliHFEV0cuts.cxx:43
 AliHFEV0cuts.cxx:44
 AliHFEV0cuts.cxx:45
 AliHFEV0cuts.cxx:46
 AliHFEV0cuts.cxx:47
 AliHFEV0cuts.cxx:48
 AliHFEV0cuts.cxx:49
 AliHFEV0cuts.cxx:50
 AliHFEV0cuts.cxx:51
 AliHFEV0cuts.cxx:52
 AliHFEV0cuts.cxx:53
 AliHFEV0cuts.cxx:54
 AliHFEV0cuts.cxx:55
 AliHFEV0cuts.cxx:56
 AliHFEV0cuts.cxx:57
 AliHFEV0cuts.cxx:58
 AliHFEV0cuts.cxx:59
 AliHFEV0cuts.cxx:60
 AliHFEV0cuts.cxx:61
 AliHFEV0cuts.cxx:62
 AliHFEV0cuts.cxx:63
 AliHFEV0cuts.cxx:64
 AliHFEV0cuts.cxx:65
 AliHFEV0cuts.cxx:66
 AliHFEV0cuts.cxx:67
 AliHFEV0cuts.cxx:68
 AliHFEV0cuts.cxx:69
 AliHFEV0cuts.cxx:70
 AliHFEV0cuts.cxx:71
 AliHFEV0cuts.cxx:72
 AliHFEV0cuts.cxx:73
 AliHFEV0cuts.cxx:74
 AliHFEV0cuts.cxx:75
 AliHFEV0cuts.cxx:76
 AliHFEV0cuts.cxx:77
 AliHFEV0cuts.cxx:78
 AliHFEV0cuts.cxx:79
 AliHFEV0cuts.cxx:80
 AliHFEV0cuts.cxx:81
 AliHFEV0cuts.cxx:82
 AliHFEV0cuts.cxx:83
 AliHFEV0cuts.cxx:84
 AliHFEV0cuts.cxx:85
 AliHFEV0cuts.cxx:86
 AliHFEV0cuts.cxx:87
 AliHFEV0cuts.cxx:88
 AliHFEV0cuts.cxx:89
 AliHFEV0cuts.cxx:90
 AliHFEV0cuts.cxx:91
 AliHFEV0cuts.cxx:92
 AliHFEV0cuts.cxx:93
 AliHFEV0cuts.cxx:94
 AliHFEV0cuts.cxx:95
 AliHFEV0cuts.cxx:96
 AliHFEV0cuts.cxx:97
 AliHFEV0cuts.cxx:98
 AliHFEV0cuts.cxx:99
 AliHFEV0cuts.cxx:100
 AliHFEV0cuts.cxx:101
 AliHFEV0cuts.cxx:102
 AliHFEV0cuts.cxx:103
 AliHFEV0cuts.cxx:104
 AliHFEV0cuts.cxx:105
 AliHFEV0cuts.cxx:106
 AliHFEV0cuts.cxx:107
 AliHFEV0cuts.cxx:108
 AliHFEV0cuts.cxx:109
 AliHFEV0cuts.cxx:110
 AliHFEV0cuts.cxx:111
 AliHFEV0cuts.cxx:112
 AliHFEV0cuts.cxx:113
 AliHFEV0cuts.cxx:114
 AliHFEV0cuts.cxx:115
 AliHFEV0cuts.cxx:116
 AliHFEV0cuts.cxx:117
 AliHFEV0cuts.cxx:118
 AliHFEV0cuts.cxx:119
 AliHFEV0cuts.cxx:120
 AliHFEV0cuts.cxx:121
 AliHFEV0cuts.cxx:122
 AliHFEV0cuts.cxx:123
 AliHFEV0cuts.cxx:124
 AliHFEV0cuts.cxx:125
 AliHFEV0cuts.cxx:126
 AliHFEV0cuts.cxx:127
 AliHFEV0cuts.cxx:128
 AliHFEV0cuts.cxx:129
 AliHFEV0cuts.cxx:130
 AliHFEV0cuts.cxx:131
 AliHFEV0cuts.cxx:132
 AliHFEV0cuts.cxx:133
 AliHFEV0cuts.cxx:134
 AliHFEV0cuts.cxx:135
 AliHFEV0cuts.cxx:136
 AliHFEV0cuts.cxx:137
 AliHFEV0cuts.cxx:138
 AliHFEV0cuts.cxx:139
 AliHFEV0cuts.cxx:140
 AliHFEV0cuts.cxx:141
 AliHFEV0cuts.cxx:142
 AliHFEV0cuts.cxx:143
 AliHFEV0cuts.cxx:144
 AliHFEV0cuts.cxx:145
 AliHFEV0cuts.cxx:146
 AliHFEV0cuts.cxx:147
 AliHFEV0cuts.cxx:148
 AliHFEV0cuts.cxx:149
 AliHFEV0cuts.cxx:150
 AliHFEV0cuts.cxx:151
 AliHFEV0cuts.cxx:152
 AliHFEV0cuts.cxx:153
 AliHFEV0cuts.cxx:154
 AliHFEV0cuts.cxx:155
 AliHFEV0cuts.cxx:156
 AliHFEV0cuts.cxx:157
 AliHFEV0cuts.cxx:158
 AliHFEV0cuts.cxx:159
 AliHFEV0cuts.cxx:160
 AliHFEV0cuts.cxx:161
 AliHFEV0cuts.cxx:162
 AliHFEV0cuts.cxx:163
 AliHFEV0cuts.cxx:164
 AliHFEV0cuts.cxx:165
 AliHFEV0cuts.cxx:166
 AliHFEV0cuts.cxx:167
 AliHFEV0cuts.cxx:168
 AliHFEV0cuts.cxx:169
 AliHFEV0cuts.cxx:170
 AliHFEV0cuts.cxx:171
 AliHFEV0cuts.cxx:172
 AliHFEV0cuts.cxx:173
 AliHFEV0cuts.cxx:174
 AliHFEV0cuts.cxx:175
 AliHFEV0cuts.cxx:176
 AliHFEV0cuts.cxx:177
 AliHFEV0cuts.cxx:178
 AliHFEV0cuts.cxx:179
 AliHFEV0cuts.cxx:180
 AliHFEV0cuts.cxx:181
 AliHFEV0cuts.cxx:182
 AliHFEV0cuts.cxx:183
 AliHFEV0cuts.cxx:184
 AliHFEV0cuts.cxx:185
 AliHFEV0cuts.cxx:186
 AliHFEV0cuts.cxx:187
 AliHFEV0cuts.cxx:188
 AliHFEV0cuts.cxx:189
 AliHFEV0cuts.cxx:190
 AliHFEV0cuts.cxx:191
 AliHFEV0cuts.cxx:192
 AliHFEV0cuts.cxx:193
 AliHFEV0cuts.cxx:194
 AliHFEV0cuts.cxx:195
 AliHFEV0cuts.cxx:196
 AliHFEV0cuts.cxx:197
 AliHFEV0cuts.cxx:198
 AliHFEV0cuts.cxx:199
 AliHFEV0cuts.cxx:200
 AliHFEV0cuts.cxx:201
 AliHFEV0cuts.cxx:202
 AliHFEV0cuts.cxx:203
 AliHFEV0cuts.cxx:204
 AliHFEV0cuts.cxx:205
 AliHFEV0cuts.cxx:206
 AliHFEV0cuts.cxx:207
 AliHFEV0cuts.cxx:208
 AliHFEV0cuts.cxx:209
 AliHFEV0cuts.cxx:210
 AliHFEV0cuts.cxx:211
 AliHFEV0cuts.cxx:212
 AliHFEV0cuts.cxx:213
 AliHFEV0cuts.cxx:214
 AliHFEV0cuts.cxx:215
 AliHFEV0cuts.cxx:216
 AliHFEV0cuts.cxx:217
 AliHFEV0cuts.cxx:218
 AliHFEV0cuts.cxx:219
 AliHFEV0cuts.cxx:220
 AliHFEV0cuts.cxx:221
 AliHFEV0cuts.cxx:222
 AliHFEV0cuts.cxx:223
 AliHFEV0cuts.cxx:224
 AliHFEV0cuts.cxx:225
 AliHFEV0cuts.cxx:226
 AliHFEV0cuts.cxx:227
 AliHFEV0cuts.cxx:228
 AliHFEV0cuts.cxx:229
 AliHFEV0cuts.cxx:230
 AliHFEV0cuts.cxx:231
 AliHFEV0cuts.cxx:232
 AliHFEV0cuts.cxx:233
 AliHFEV0cuts.cxx:234
 AliHFEV0cuts.cxx:235
 AliHFEV0cuts.cxx:236
 AliHFEV0cuts.cxx:237
 AliHFEV0cuts.cxx:238
 AliHFEV0cuts.cxx:239
 AliHFEV0cuts.cxx:240
 AliHFEV0cuts.cxx:241
 AliHFEV0cuts.cxx:242
 AliHFEV0cuts.cxx:243
 AliHFEV0cuts.cxx:244
 AliHFEV0cuts.cxx:245
 AliHFEV0cuts.cxx:246
 AliHFEV0cuts.cxx:247
 AliHFEV0cuts.cxx:248
 AliHFEV0cuts.cxx:249
 AliHFEV0cuts.cxx:250
 AliHFEV0cuts.cxx:251
 AliHFEV0cuts.cxx:252
 AliHFEV0cuts.cxx:253
 AliHFEV0cuts.cxx:254
 AliHFEV0cuts.cxx:255
 AliHFEV0cuts.cxx:256
 AliHFEV0cuts.cxx:257
 AliHFEV0cuts.cxx:258
 AliHFEV0cuts.cxx:259
 AliHFEV0cuts.cxx:260
 AliHFEV0cuts.cxx:261
 AliHFEV0cuts.cxx:262
 AliHFEV0cuts.cxx:263
 AliHFEV0cuts.cxx:264
 AliHFEV0cuts.cxx:265
 AliHFEV0cuts.cxx:266
 AliHFEV0cuts.cxx:267
 AliHFEV0cuts.cxx:268
 AliHFEV0cuts.cxx:269
 AliHFEV0cuts.cxx:270
 AliHFEV0cuts.cxx:271
 AliHFEV0cuts.cxx:272
 AliHFEV0cuts.cxx:273
 AliHFEV0cuts.cxx:274
 AliHFEV0cuts.cxx:275
 AliHFEV0cuts.cxx:276
 AliHFEV0cuts.cxx:277
 AliHFEV0cuts.cxx:278
 AliHFEV0cuts.cxx:279
 AliHFEV0cuts.cxx:280
 AliHFEV0cuts.cxx:281
 AliHFEV0cuts.cxx:282
 AliHFEV0cuts.cxx:283
 AliHFEV0cuts.cxx:284
 AliHFEV0cuts.cxx:285
 AliHFEV0cuts.cxx:286
 AliHFEV0cuts.cxx:287
 AliHFEV0cuts.cxx:288
 AliHFEV0cuts.cxx:289
 AliHFEV0cuts.cxx:290
 AliHFEV0cuts.cxx:291
 AliHFEV0cuts.cxx:292
 AliHFEV0cuts.cxx:293
 AliHFEV0cuts.cxx:294
 AliHFEV0cuts.cxx:295
 AliHFEV0cuts.cxx:296
 AliHFEV0cuts.cxx:297
 AliHFEV0cuts.cxx:298
 AliHFEV0cuts.cxx:299
 AliHFEV0cuts.cxx:300
 AliHFEV0cuts.cxx:301
 AliHFEV0cuts.cxx:302
 AliHFEV0cuts.cxx:303
 AliHFEV0cuts.cxx:304
 AliHFEV0cuts.cxx:305
 AliHFEV0cuts.cxx:306
 AliHFEV0cuts.cxx:307
 AliHFEV0cuts.cxx:308
 AliHFEV0cuts.cxx:309
 AliHFEV0cuts.cxx:310
 AliHFEV0cuts.cxx:311
 AliHFEV0cuts.cxx:312
 AliHFEV0cuts.cxx:313
 AliHFEV0cuts.cxx:314
 AliHFEV0cuts.cxx:315
 AliHFEV0cuts.cxx:316
 AliHFEV0cuts.cxx:317
 AliHFEV0cuts.cxx:318
 AliHFEV0cuts.cxx:319
 AliHFEV0cuts.cxx:320
 AliHFEV0cuts.cxx:321
 AliHFEV0cuts.cxx:322
 AliHFEV0cuts.cxx:323
 AliHFEV0cuts.cxx:324
 AliHFEV0cuts.cxx:325
 AliHFEV0cuts.cxx:326
 AliHFEV0cuts.cxx:327
 AliHFEV0cuts.cxx:328
 AliHFEV0cuts.cxx:329
 AliHFEV0cuts.cxx:330
 AliHFEV0cuts.cxx:331
 AliHFEV0cuts.cxx:332
 AliHFEV0cuts.cxx:333
 AliHFEV0cuts.cxx:334
 AliHFEV0cuts.cxx:335
 AliHFEV0cuts.cxx:336
 AliHFEV0cuts.cxx:337
 AliHFEV0cuts.cxx:338
 AliHFEV0cuts.cxx:339
 AliHFEV0cuts.cxx:340
 AliHFEV0cuts.cxx:341
 AliHFEV0cuts.cxx:342
 AliHFEV0cuts.cxx:343
 AliHFEV0cuts.cxx:344
 AliHFEV0cuts.cxx:345
 AliHFEV0cuts.cxx:346
 AliHFEV0cuts.cxx:347
 AliHFEV0cuts.cxx:348
 AliHFEV0cuts.cxx:349
 AliHFEV0cuts.cxx:350
 AliHFEV0cuts.cxx:351
 AliHFEV0cuts.cxx:352
 AliHFEV0cuts.cxx:353
 AliHFEV0cuts.cxx:354
 AliHFEV0cuts.cxx:355
 AliHFEV0cuts.cxx:356
 AliHFEV0cuts.cxx:357
 AliHFEV0cuts.cxx:358
 AliHFEV0cuts.cxx:359
 AliHFEV0cuts.cxx:360
 AliHFEV0cuts.cxx:361
 AliHFEV0cuts.cxx:362
 AliHFEV0cuts.cxx:363
 AliHFEV0cuts.cxx:364
 AliHFEV0cuts.cxx:365
 AliHFEV0cuts.cxx:366
 AliHFEV0cuts.cxx:367
 AliHFEV0cuts.cxx:368
 AliHFEV0cuts.cxx:369
 AliHFEV0cuts.cxx:370
 AliHFEV0cuts.cxx:371
 AliHFEV0cuts.cxx:372
 AliHFEV0cuts.cxx:373
 AliHFEV0cuts.cxx:374
 AliHFEV0cuts.cxx:375
 AliHFEV0cuts.cxx:376
 AliHFEV0cuts.cxx:377
 AliHFEV0cuts.cxx:378
 AliHFEV0cuts.cxx:379
 AliHFEV0cuts.cxx:380
 AliHFEV0cuts.cxx:381
 AliHFEV0cuts.cxx:382
 AliHFEV0cuts.cxx:383
 AliHFEV0cuts.cxx:384
 AliHFEV0cuts.cxx:385
 AliHFEV0cuts.cxx:386
 AliHFEV0cuts.cxx:387
 AliHFEV0cuts.cxx:388
 AliHFEV0cuts.cxx:389
 AliHFEV0cuts.cxx:390
 AliHFEV0cuts.cxx:391
 AliHFEV0cuts.cxx:392
 AliHFEV0cuts.cxx:393
 AliHFEV0cuts.cxx:394
 AliHFEV0cuts.cxx:395
 AliHFEV0cuts.cxx:396
 AliHFEV0cuts.cxx:397
 AliHFEV0cuts.cxx:398
 AliHFEV0cuts.cxx:399
 AliHFEV0cuts.cxx:400
 AliHFEV0cuts.cxx:401
 AliHFEV0cuts.cxx:402
 AliHFEV0cuts.cxx:403
 AliHFEV0cuts.cxx:404
 AliHFEV0cuts.cxx:405
 AliHFEV0cuts.cxx:406
 AliHFEV0cuts.cxx:407
 AliHFEV0cuts.cxx:408
 AliHFEV0cuts.cxx:409
 AliHFEV0cuts.cxx:410
 AliHFEV0cuts.cxx:411
 AliHFEV0cuts.cxx:412
 AliHFEV0cuts.cxx:413
 AliHFEV0cuts.cxx:414
 AliHFEV0cuts.cxx:415
 AliHFEV0cuts.cxx:416
 AliHFEV0cuts.cxx:417
 AliHFEV0cuts.cxx:418
 AliHFEV0cuts.cxx:419
 AliHFEV0cuts.cxx:420
 AliHFEV0cuts.cxx:421
 AliHFEV0cuts.cxx:422
 AliHFEV0cuts.cxx:423
 AliHFEV0cuts.cxx:424
 AliHFEV0cuts.cxx:425
 AliHFEV0cuts.cxx:426
 AliHFEV0cuts.cxx:427
 AliHFEV0cuts.cxx:428
 AliHFEV0cuts.cxx:429
 AliHFEV0cuts.cxx:430
 AliHFEV0cuts.cxx:431
 AliHFEV0cuts.cxx:432
 AliHFEV0cuts.cxx:433
 AliHFEV0cuts.cxx:434
 AliHFEV0cuts.cxx:435
 AliHFEV0cuts.cxx:436
 AliHFEV0cuts.cxx:437
 AliHFEV0cuts.cxx:438
 AliHFEV0cuts.cxx:439
 AliHFEV0cuts.cxx:440
 AliHFEV0cuts.cxx:441
 AliHFEV0cuts.cxx:442
 AliHFEV0cuts.cxx:443
 AliHFEV0cuts.cxx:444
 AliHFEV0cuts.cxx:445
 AliHFEV0cuts.cxx:446
 AliHFEV0cuts.cxx:447
 AliHFEV0cuts.cxx:448
 AliHFEV0cuts.cxx:449
 AliHFEV0cuts.cxx:450
 AliHFEV0cuts.cxx:451
 AliHFEV0cuts.cxx:452
 AliHFEV0cuts.cxx:453
 AliHFEV0cuts.cxx:454
 AliHFEV0cuts.cxx:455
 AliHFEV0cuts.cxx:456
 AliHFEV0cuts.cxx:457
 AliHFEV0cuts.cxx:458
 AliHFEV0cuts.cxx:459
 AliHFEV0cuts.cxx:460
 AliHFEV0cuts.cxx:461
 AliHFEV0cuts.cxx:462
 AliHFEV0cuts.cxx:463
 AliHFEV0cuts.cxx:464
 AliHFEV0cuts.cxx:465
 AliHFEV0cuts.cxx:466
 AliHFEV0cuts.cxx:467
 AliHFEV0cuts.cxx:468
 AliHFEV0cuts.cxx:469
 AliHFEV0cuts.cxx:470
 AliHFEV0cuts.cxx:471
 AliHFEV0cuts.cxx:472
 AliHFEV0cuts.cxx:473
 AliHFEV0cuts.cxx:474
 AliHFEV0cuts.cxx:475
 AliHFEV0cuts.cxx:476
 AliHFEV0cuts.cxx:477
 AliHFEV0cuts.cxx:478
 AliHFEV0cuts.cxx:479
 AliHFEV0cuts.cxx:480
 AliHFEV0cuts.cxx:481
 AliHFEV0cuts.cxx:482
 AliHFEV0cuts.cxx:483
 AliHFEV0cuts.cxx:484
 AliHFEV0cuts.cxx:485
 AliHFEV0cuts.cxx:486
 AliHFEV0cuts.cxx:487
 AliHFEV0cuts.cxx:488
 AliHFEV0cuts.cxx:489
 AliHFEV0cuts.cxx:490
 AliHFEV0cuts.cxx:491
 AliHFEV0cuts.cxx:492
 AliHFEV0cuts.cxx:493
 AliHFEV0cuts.cxx:494
 AliHFEV0cuts.cxx:495
 AliHFEV0cuts.cxx:496
 AliHFEV0cuts.cxx:497
 AliHFEV0cuts.cxx:498
 AliHFEV0cuts.cxx:499
 AliHFEV0cuts.cxx:500
 AliHFEV0cuts.cxx:501
 AliHFEV0cuts.cxx:502
 AliHFEV0cuts.cxx:503
 AliHFEV0cuts.cxx:504
 AliHFEV0cuts.cxx:505
 AliHFEV0cuts.cxx:506
 AliHFEV0cuts.cxx:507
 AliHFEV0cuts.cxx:508
 AliHFEV0cuts.cxx:509
 AliHFEV0cuts.cxx:510
 AliHFEV0cuts.cxx:511
 AliHFEV0cuts.cxx:512
 AliHFEV0cuts.cxx:513
 AliHFEV0cuts.cxx:514
 AliHFEV0cuts.cxx:515
 AliHFEV0cuts.cxx:516
 AliHFEV0cuts.cxx:517
 AliHFEV0cuts.cxx:518
 AliHFEV0cuts.cxx:519
 AliHFEV0cuts.cxx:520
 AliHFEV0cuts.cxx:521
 AliHFEV0cuts.cxx:522
 AliHFEV0cuts.cxx:523
 AliHFEV0cuts.cxx:524
 AliHFEV0cuts.cxx:525
 AliHFEV0cuts.cxx:526
 AliHFEV0cuts.cxx:527
 AliHFEV0cuts.cxx:528
 AliHFEV0cuts.cxx:529
 AliHFEV0cuts.cxx:530
 AliHFEV0cuts.cxx:531
 AliHFEV0cuts.cxx:532
 AliHFEV0cuts.cxx:533
 AliHFEV0cuts.cxx:534
 AliHFEV0cuts.cxx:535
 AliHFEV0cuts.cxx:536
 AliHFEV0cuts.cxx:537
 AliHFEV0cuts.cxx:538
 AliHFEV0cuts.cxx:539
 AliHFEV0cuts.cxx:540
 AliHFEV0cuts.cxx:541
 AliHFEV0cuts.cxx:542
 AliHFEV0cuts.cxx:543
 AliHFEV0cuts.cxx:544
 AliHFEV0cuts.cxx:545
 AliHFEV0cuts.cxx:546
 AliHFEV0cuts.cxx:547
 AliHFEV0cuts.cxx:548
 AliHFEV0cuts.cxx:549
 AliHFEV0cuts.cxx:550
 AliHFEV0cuts.cxx:551
 AliHFEV0cuts.cxx:552
 AliHFEV0cuts.cxx:553
 AliHFEV0cuts.cxx:554
 AliHFEV0cuts.cxx:555
 AliHFEV0cuts.cxx:556
 AliHFEV0cuts.cxx:557
 AliHFEV0cuts.cxx:558
 AliHFEV0cuts.cxx:559
 AliHFEV0cuts.cxx:560
 AliHFEV0cuts.cxx:561
 AliHFEV0cuts.cxx:562
 AliHFEV0cuts.cxx:563
 AliHFEV0cuts.cxx:564
 AliHFEV0cuts.cxx:565
 AliHFEV0cuts.cxx:566
 AliHFEV0cuts.cxx:567
 AliHFEV0cuts.cxx:568
 AliHFEV0cuts.cxx:569
 AliHFEV0cuts.cxx:570
 AliHFEV0cuts.cxx:571
 AliHFEV0cuts.cxx:572
 AliHFEV0cuts.cxx:573
 AliHFEV0cuts.cxx:574
 AliHFEV0cuts.cxx:575
 AliHFEV0cuts.cxx:576
 AliHFEV0cuts.cxx:577
 AliHFEV0cuts.cxx:578
 AliHFEV0cuts.cxx:579
 AliHFEV0cuts.cxx:580
 AliHFEV0cuts.cxx:581
 AliHFEV0cuts.cxx:582
 AliHFEV0cuts.cxx:583
 AliHFEV0cuts.cxx:584
 AliHFEV0cuts.cxx:585
 AliHFEV0cuts.cxx:586
 AliHFEV0cuts.cxx:587
 AliHFEV0cuts.cxx:588
 AliHFEV0cuts.cxx:589
 AliHFEV0cuts.cxx:590
 AliHFEV0cuts.cxx:591
 AliHFEV0cuts.cxx:592
 AliHFEV0cuts.cxx:593
 AliHFEV0cuts.cxx:594
 AliHFEV0cuts.cxx:595
 AliHFEV0cuts.cxx:596
 AliHFEV0cuts.cxx:597
 AliHFEV0cuts.cxx:598
 AliHFEV0cuts.cxx:599
 AliHFEV0cuts.cxx:600
 AliHFEV0cuts.cxx:601
 AliHFEV0cuts.cxx:602
 AliHFEV0cuts.cxx:603
 AliHFEV0cuts.cxx:604
 AliHFEV0cuts.cxx:605
 AliHFEV0cuts.cxx:606
 AliHFEV0cuts.cxx:607
 AliHFEV0cuts.cxx:608
 AliHFEV0cuts.cxx:609
 AliHFEV0cuts.cxx:610
 AliHFEV0cuts.cxx:611
 AliHFEV0cuts.cxx:612
 AliHFEV0cuts.cxx:613
 AliHFEV0cuts.cxx:614
 AliHFEV0cuts.cxx:615
 AliHFEV0cuts.cxx:616
 AliHFEV0cuts.cxx:617
 AliHFEV0cuts.cxx:618
 AliHFEV0cuts.cxx:619
 AliHFEV0cuts.cxx:620
 AliHFEV0cuts.cxx:621
 AliHFEV0cuts.cxx:622
 AliHFEV0cuts.cxx:623
 AliHFEV0cuts.cxx:624
 AliHFEV0cuts.cxx:625
 AliHFEV0cuts.cxx:626
 AliHFEV0cuts.cxx:627
 AliHFEV0cuts.cxx:628
 AliHFEV0cuts.cxx:629
 AliHFEV0cuts.cxx:630
 AliHFEV0cuts.cxx:631
 AliHFEV0cuts.cxx:632
 AliHFEV0cuts.cxx:633
 AliHFEV0cuts.cxx:634
 AliHFEV0cuts.cxx:635
 AliHFEV0cuts.cxx:636
 AliHFEV0cuts.cxx:637
 AliHFEV0cuts.cxx:638
 AliHFEV0cuts.cxx:639
 AliHFEV0cuts.cxx:640
 AliHFEV0cuts.cxx:641
 AliHFEV0cuts.cxx:642
 AliHFEV0cuts.cxx:643
 AliHFEV0cuts.cxx:644
 AliHFEV0cuts.cxx:645
 AliHFEV0cuts.cxx:646
 AliHFEV0cuts.cxx:647
 AliHFEV0cuts.cxx:648
 AliHFEV0cuts.cxx:649
 AliHFEV0cuts.cxx:650
 AliHFEV0cuts.cxx:651
 AliHFEV0cuts.cxx:652
 AliHFEV0cuts.cxx:653
 AliHFEV0cuts.cxx:654
 AliHFEV0cuts.cxx:655
 AliHFEV0cuts.cxx:656
 AliHFEV0cuts.cxx:657
 AliHFEV0cuts.cxx:658
 AliHFEV0cuts.cxx:659
 AliHFEV0cuts.cxx:660
 AliHFEV0cuts.cxx:661
 AliHFEV0cuts.cxx:662
 AliHFEV0cuts.cxx:663
 AliHFEV0cuts.cxx:664
 AliHFEV0cuts.cxx:665
 AliHFEV0cuts.cxx:666
 AliHFEV0cuts.cxx:667
 AliHFEV0cuts.cxx:668
 AliHFEV0cuts.cxx:669
 AliHFEV0cuts.cxx:670
 AliHFEV0cuts.cxx:671
 AliHFEV0cuts.cxx:672
 AliHFEV0cuts.cxx:673
 AliHFEV0cuts.cxx:674
 AliHFEV0cuts.cxx:675
 AliHFEV0cuts.cxx:676
 AliHFEV0cuts.cxx:677
 AliHFEV0cuts.cxx:678
 AliHFEV0cuts.cxx:679
 AliHFEV0cuts.cxx:680
 AliHFEV0cuts.cxx:681
 AliHFEV0cuts.cxx:682
 AliHFEV0cuts.cxx:683
 AliHFEV0cuts.cxx:684
 AliHFEV0cuts.cxx:685
 AliHFEV0cuts.cxx:686
 AliHFEV0cuts.cxx:687
 AliHFEV0cuts.cxx:688
 AliHFEV0cuts.cxx:689
 AliHFEV0cuts.cxx:690
 AliHFEV0cuts.cxx:691
 AliHFEV0cuts.cxx:692
 AliHFEV0cuts.cxx:693
 AliHFEV0cuts.cxx:694
 AliHFEV0cuts.cxx:695
 AliHFEV0cuts.cxx:696
 AliHFEV0cuts.cxx:697
 AliHFEV0cuts.cxx:698
 AliHFEV0cuts.cxx:699
 AliHFEV0cuts.cxx:700
 AliHFEV0cuts.cxx:701
 AliHFEV0cuts.cxx:702
 AliHFEV0cuts.cxx:703
 AliHFEV0cuts.cxx:704
 AliHFEV0cuts.cxx:705
 AliHFEV0cuts.cxx:706
 AliHFEV0cuts.cxx:707
 AliHFEV0cuts.cxx:708
 AliHFEV0cuts.cxx:709
 AliHFEV0cuts.cxx:710
 AliHFEV0cuts.cxx:711
 AliHFEV0cuts.cxx:712
 AliHFEV0cuts.cxx:713
 AliHFEV0cuts.cxx:714
 AliHFEV0cuts.cxx:715
 AliHFEV0cuts.cxx:716
 AliHFEV0cuts.cxx:717
 AliHFEV0cuts.cxx:718
 AliHFEV0cuts.cxx:719
 AliHFEV0cuts.cxx:720
 AliHFEV0cuts.cxx:721
 AliHFEV0cuts.cxx:722
 AliHFEV0cuts.cxx:723
 AliHFEV0cuts.cxx:724
 AliHFEV0cuts.cxx:725
 AliHFEV0cuts.cxx:726
 AliHFEV0cuts.cxx:727
 AliHFEV0cuts.cxx:728
 AliHFEV0cuts.cxx:729
 AliHFEV0cuts.cxx:730
 AliHFEV0cuts.cxx:731
 AliHFEV0cuts.cxx:732
 AliHFEV0cuts.cxx:733
 AliHFEV0cuts.cxx:734
 AliHFEV0cuts.cxx:735
 AliHFEV0cuts.cxx:736
 AliHFEV0cuts.cxx:737
 AliHFEV0cuts.cxx:738
 AliHFEV0cuts.cxx:739
 AliHFEV0cuts.cxx:740
 AliHFEV0cuts.cxx:741
 AliHFEV0cuts.cxx:742
 AliHFEV0cuts.cxx:743
 AliHFEV0cuts.cxx:744
 AliHFEV0cuts.cxx:745
 AliHFEV0cuts.cxx:746
 AliHFEV0cuts.cxx:747
 AliHFEV0cuts.cxx:748
 AliHFEV0cuts.cxx:749
 AliHFEV0cuts.cxx:750
 AliHFEV0cuts.cxx:751
 AliHFEV0cuts.cxx:752
 AliHFEV0cuts.cxx:753
 AliHFEV0cuts.cxx:754
 AliHFEV0cuts.cxx:755
 AliHFEV0cuts.cxx:756
 AliHFEV0cuts.cxx:757
 AliHFEV0cuts.cxx:758
 AliHFEV0cuts.cxx:759
 AliHFEV0cuts.cxx:760
 AliHFEV0cuts.cxx:761
 AliHFEV0cuts.cxx:762
 AliHFEV0cuts.cxx:763
 AliHFEV0cuts.cxx:764
 AliHFEV0cuts.cxx:765
 AliHFEV0cuts.cxx:766
 AliHFEV0cuts.cxx:767
 AliHFEV0cuts.cxx:768
 AliHFEV0cuts.cxx:769
 AliHFEV0cuts.cxx:770
 AliHFEV0cuts.cxx:771
 AliHFEV0cuts.cxx:772
 AliHFEV0cuts.cxx:773
 AliHFEV0cuts.cxx:774
 AliHFEV0cuts.cxx:775
 AliHFEV0cuts.cxx:776
 AliHFEV0cuts.cxx:777
 AliHFEV0cuts.cxx:778
 AliHFEV0cuts.cxx:779
 AliHFEV0cuts.cxx:780
 AliHFEV0cuts.cxx:781
 AliHFEV0cuts.cxx:782
 AliHFEV0cuts.cxx:783
 AliHFEV0cuts.cxx:784
 AliHFEV0cuts.cxx:785
 AliHFEV0cuts.cxx:786
 AliHFEV0cuts.cxx:787
 AliHFEV0cuts.cxx:788
 AliHFEV0cuts.cxx:789
 AliHFEV0cuts.cxx:790
 AliHFEV0cuts.cxx:791
 AliHFEV0cuts.cxx:792
 AliHFEV0cuts.cxx:793
 AliHFEV0cuts.cxx:794
 AliHFEV0cuts.cxx:795
 AliHFEV0cuts.cxx:796
 AliHFEV0cuts.cxx:797
 AliHFEV0cuts.cxx:798
 AliHFEV0cuts.cxx:799
 AliHFEV0cuts.cxx:800
 AliHFEV0cuts.cxx:801
 AliHFEV0cuts.cxx:802
 AliHFEV0cuts.cxx:803
 AliHFEV0cuts.cxx:804
 AliHFEV0cuts.cxx:805
 AliHFEV0cuts.cxx:806
 AliHFEV0cuts.cxx:807
 AliHFEV0cuts.cxx:808
 AliHFEV0cuts.cxx:809
 AliHFEV0cuts.cxx:810
 AliHFEV0cuts.cxx:811
 AliHFEV0cuts.cxx:812
 AliHFEV0cuts.cxx:813
 AliHFEV0cuts.cxx:814
 AliHFEV0cuts.cxx:815
 AliHFEV0cuts.cxx:816
 AliHFEV0cuts.cxx:817
 AliHFEV0cuts.cxx:818
 AliHFEV0cuts.cxx:819
 AliHFEV0cuts.cxx:820
 AliHFEV0cuts.cxx:821
 AliHFEV0cuts.cxx:822
 AliHFEV0cuts.cxx:823
 AliHFEV0cuts.cxx:824
 AliHFEV0cuts.cxx:825
 AliHFEV0cuts.cxx:826
 AliHFEV0cuts.cxx:827
 AliHFEV0cuts.cxx:828
 AliHFEV0cuts.cxx:829
 AliHFEV0cuts.cxx:830
 AliHFEV0cuts.cxx:831
 AliHFEV0cuts.cxx:832
 AliHFEV0cuts.cxx:833
 AliHFEV0cuts.cxx:834
 AliHFEV0cuts.cxx:835
 AliHFEV0cuts.cxx:836
 AliHFEV0cuts.cxx:837
 AliHFEV0cuts.cxx:838
 AliHFEV0cuts.cxx:839
 AliHFEV0cuts.cxx:840
 AliHFEV0cuts.cxx:841
 AliHFEV0cuts.cxx:842
 AliHFEV0cuts.cxx:843
 AliHFEV0cuts.cxx:844
 AliHFEV0cuts.cxx:845
 AliHFEV0cuts.cxx:846
 AliHFEV0cuts.cxx:847
 AliHFEV0cuts.cxx:848
 AliHFEV0cuts.cxx:849
 AliHFEV0cuts.cxx:850
 AliHFEV0cuts.cxx:851
 AliHFEV0cuts.cxx:852
 AliHFEV0cuts.cxx:853
 AliHFEV0cuts.cxx:854
 AliHFEV0cuts.cxx:855
 AliHFEV0cuts.cxx:856
 AliHFEV0cuts.cxx:857
 AliHFEV0cuts.cxx:858
 AliHFEV0cuts.cxx:859
 AliHFEV0cuts.cxx:860
 AliHFEV0cuts.cxx:861
 AliHFEV0cuts.cxx:862
 AliHFEV0cuts.cxx:863
 AliHFEV0cuts.cxx:864
 AliHFEV0cuts.cxx:865
 AliHFEV0cuts.cxx:866
 AliHFEV0cuts.cxx:867
 AliHFEV0cuts.cxx:868
 AliHFEV0cuts.cxx:869
 AliHFEV0cuts.cxx:870
 AliHFEV0cuts.cxx:871
 AliHFEV0cuts.cxx:872
 AliHFEV0cuts.cxx:873
 AliHFEV0cuts.cxx:874
 AliHFEV0cuts.cxx:875
 AliHFEV0cuts.cxx:876
 AliHFEV0cuts.cxx:877
 AliHFEV0cuts.cxx:878
 AliHFEV0cuts.cxx:879
 AliHFEV0cuts.cxx:880
 AliHFEV0cuts.cxx:881
 AliHFEV0cuts.cxx:882
 AliHFEV0cuts.cxx:883
 AliHFEV0cuts.cxx:884
 AliHFEV0cuts.cxx:885
 AliHFEV0cuts.cxx:886
 AliHFEV0cuts.cxx:887
 AliHFEV0cuts.cxx:888
 AliHFEV0cuts.cxx:889
 AliHFEV0cuts.cxx:890
 AliHFEV0cuts.cxx:891
 AliHFEV0cuts.cxx:892
 AliHFEV0cuts.cxx:893
 AliHFEV0cuts.cxx:894
 AliHFEV0cuts.cxx:895
 AliHFEV0cuts.cxx:896
 AliHFEV0cuts.cxx:897
 AliHFEV0cuts.cxx:898
 AliHFEV0cuts.cxx:899
 AliHFEV0cuts.cxx:900
 AliHFEV0cuts.cxx:901
 AliHFEV0cuts.cxx:902
 AliHFEV0cuts.cxx:903
 AliHFEV0cuts.cxx:904
 AliHFEV0cuts.cxx:905
 AliHFEV0cuts.cxx:906
 AliHFEV0cuts.cxx:907
 AliHFEV0cuts.cxx:908
 AliHFEV0cuts.cxx:909
 AliHFEV0cuts.cxx:910
 AliHFEV0cuts.cxx:911
 AliHFEV0cuts.cxx:912
 AliHFEV0cuts.cxx:913
 AliHFEV0cuts.cxx:914
 AliHFEV0cuts.cxx:915
 AliHFEV0cuts.cxx:916
 AliHFEV0cuts.cxx:917
 AliHFEV0cuts.cxx:918
 AliHFEV0cuts.cxx:919
 AliHFEV0cuts.cxx:920
 AliHFEV0cuts.cxx:921
 AliHFEV0cuts.cxx:922
 AliHFEV0cuts.cxx:923
 AliHFEV0cuts.cxx:924
 AliHFEV0cuts.cxx:925
 AliHFEV0cuts.cxx:926
 AliHFEV0cuts.cxx:927
 AliHFEV0cuts.cxx:928
 AliHFEV0cuts.cxx:929
 AliHFEV0cuts.cxx:930
 AliHFEV0cuts.cxx:931
 AliHFEV0cuts.cxx:932
 AliHFEV0cuts.cxx:933
 AliHFEV0cuts.cxx:934
 AliHFEV0cuts.cxx:935
 AliHFEV0cuts.cxx:936
 AliHFEV0cuts.cxx:937
 AliHFEV0cuts.cxx:938
 AliHFEV0cuts.cxx:939
 AliHFEV0cuts.cxx:940
 AliHFEV0cuts.cxx:941
 AliHFEV0cuts.cxx:942
 AliHFEV0cuts.cxx:943
 AliHFEV0cuts.cxx:944
 AliHFEV0cuts.cxx:945
 AliHFEV0cuts.cxx:946
 AliHFEV0cuts.cxx:947
 AliHFEV0cuts.cxx:948
 AliHFEV0cuts.cxx:949
 AliHFEV0cuts.cxx:950
 AliHFEV0cuts.cxx:951
 AliHFEV0cuts.cxx:952
 AliHFEV0cuts.cxx:953
 AliHFEV0cuts.cxx:954
 AliHFEV0cuts.cxx:955
 AliHFEV0cuts.cxx:956
 AliHFEV0cuts.cxx:957
 AliHFEV0cuts.cxx:958
 AliHFEV0cuts.cxx:959
 AliHFEV0cuts.cxx:960
 AliHFEV0cuts.cxx:961
 AliHFEV0cuts.cxx:962
 AliHFEV0cuts.cxx:963
 AliHFEV0cuts.cxx:964
 AliHFEV0cuts.cxx:965
 AliHFEV0cuts.cxx:966
 AliHFEV0cuts.cxx:967
 AliHFEV0cuts.cxx:968
 AliHFEV0cuts.cxx:969
 AliHFEV0cuts.cxx:970
 AliHFEV0cuts.cxx:971
 AliHFEV0cuts.cxx:972
 AliHFEV0cuts.cxx:973
 AliHFEV0cuts.cxx:974
 AliHFEV0cuts.cxx:975
 AliHFEV0cuts.cxx:976
 AliHFEV0cuts.cxx:977
 AliHFEV0cuts.cxx:978
 AliHFEV0cuts.cxx:979
 AliHFEV0cuts.cxx:980
 AliHFEV0cuts.cxx:981
 AliHFEV0cuts.cxx:982
 AliHFEV0cuts.cxx:983
 AliHFEV0cuts.cxx:984
 AliHFEV0cuts.cxx:985
 AliHFEV0cuts.cxx:986
 AliHFEV0cuts.cxx:987
 AliHFEV0cuts.cxx:988
 AliHFEV0cuts.cxx:989
 AliHFEV0cuts.cxx:990
 AliHFEV0cuts.cxx:991
 AliHFEV0cuts.cxx:992
 AliHFEV0cuts.cxx:993
 AliHFEV0cuts.cxx:994
 AliHFEV0cuts.cxx:995
 AliHFEV0cuts.cxx:996
 AliHFEV0cuts.cxx:997
 AliHFEV0cuts.cxx:998
 AliHFEV0cuts.cxx:999
 AliHFEV0cuts.cxx:1000
 AliHFEV0cuts.cxx:1001
 AliHFEV0cuts.cxx:1002
 AliHFEV0cuts.cxx:1003
 AliHFEV0cuts.cxx:1004
 AliHFEV0cuts.cxx:1005
 AliHFEV0cuts.cxx:1006
 AliHFEV0cuts.cxx:1007
 AliHFEV0cuts.cxx:1008
 AliHFEV0cuts.cxx:1009
 AliHFEV0cuts.cxx:1010
 AliHFEV0cuts.cxx:1011
 AliHFEV0cuts.cxx:1012
 AliHFEV0cuts.cxx:1013
 AliHFEV0cuts.cxx:1014
 AliHFEV0cuts.cxx:1015
 AliHFEV0cuts.cxx:1016
 AliHFEV0cuts.cxx:1017
 AliHFEV0cuts.cxx:1018
 AliHFEV0cuts.cxx:1019
 AliHFEV0cuts.cxx:1020
 AliHFEV0cuts.cxx:1021
 AliHFEV0cuts.cxx:1022
 AliHFEV0cuts.cxx:1023
 AliHFEV0cuts.cxx:1024
 AliHFEV0cuts.cxx:1025
 AliHFEV0cuts.cxx:1026
 AliHFEV0cuts.cxx:1027
 AliHFEV0cuts.cxx:1028
 AliHFEV0cuts.cxx:1029
 AliHFEV0cuts.cxx:1030
 AliHFEV0cuts.cxx:1031
 AliHFEV0cuts.cxx:1032
 AliHFEV0cuts.cxx:1033
 AliHFEV0cuts.cxx:1034
 AliHFEV0cuts.cxx:1035
 AliHFEV0cuts.cxx:1036
 AliHFEV0cuts.cxx:1037
 AliHFEV0cuts.cxx:1038
 AliHFEV0cuts.cxx:1039
 AliHFEV0cuts.cxx:1040
 AliHFEV0cuts.cxx:1041
 AliHFEV0cuts.cxx:1042
 AliHFEV0cuts.cxx:1043
 AliHFEV0cuts.cxx:1044
 AliHFEV0cuts.cxx:1045
 AliHFEV0cuts.cxx:1046
 AliHFEV0cuts.cxx:1047
 AliHFEV0cuts.cxx:1048
 AliHFEV0cuts.cxx:1049
 AliHFEV0cuts.cxx:1050
 AliHFEV0cuts.cxx:1051
 AliHFEV0cuts.cxx:1052
 AliHFEV0cuts.cxx:1053
 AliHFEV0cuts.cxx:1054
 AliHFEV0cuts.cxx:1055
 AliHFEV0cuts.cxx:1056
 AliHFEV0cuts.cxx:1057
 AliHFEV0cuts.cxx:1058
 AliHFEV0cuts.cxx:1059
 AliHFEV0cuts.cxx:1060
 AliHFEV0cuts.cxx:1061
 AliHFEV0cuts.cxx:1062
 AliHFEV0cuts.cxx:1063
 AliHFEV0cuts.cxx:1064
 AliHFEV0cuts.cxx:1065
 AliHFEV0cuts.cxx:1066
 AliHFEV0cuts.cxx:1067
 AliHFEV0cuts.cxx:1068
 AliHFEV0cuts.cxx:1069
 AliHFEV0cuts.cxx:1070
 AliHFEV0cuts.cxx:1071
 AliHFEV0cuts.cxx:1072
 AliHFEV0cuts.cxx:1073
 AliHFEV0cuts.cxx:1074
 AliHFEV0cuts.cxx:1075
 AliHFEV0cuts.cxx:1076
 AliHFEV0cuts.cxx:1077
 AliHFEV0cuts.cxx:1078
 AliHFEV0cuts.cxx:1079
 AliHFEV0cuts.cxx:1080
 AliHFEV0cuts.cxx:1081
 AliHFEV0cuts.cxx:1082
 AliHFEV0cuts.cxx:1083
 AliHFEV0cuts.cxx:1084
 AliHFEV0cuts.cxx:1085
 AliHFEV0cuts.cxx:1086
 AliHFEV0cuts.cxx:1087
 AliHFEV0cuts.cxx:1088
 AliHFEV0cuts.cxx:1089
 AliHFEV0cuts.cxx:1090
 AliHFEV0cuts.cxx:1091
 AliHFEV0cuts.cxx:1092
 AliHFEV0cuts.cxx:1093
 AliHFEV0cuts.cxx:1094
 AliHFEV0cuts.cxx:1095
 AliHFEV0cuts.cxx:1096
 AliHFEV0cuts.cxx:1097
 AliHFEV0cuts.cxx:1098
 AliHFEV0cuts.cxx:1099
 AliHFEV0cuts.cxx:1100
 AliHFEV0cuts.cxx:1101
 AliHFEV0cuts.cxx:1102
 AliHFEV0cuts.cxx:1103
 AliHFEV0cuts.cxx:1104
 AliHFEV0cuts.cxx:1105
 AliHFEV0cuts.cxx:1106
 AliHFEV0cuts.cxx:1107
 AliHFEV0cuts.cxx:1108
 AliHFEV0cuts.cxx:1109
 AliHFEV0cuts.cxx:1110
 AliHFEV0cuts.cxx:1111
 AliHFEV0cuts.cxx:1112
 AliHFEV0cuts.cxx:1113
 AliHFEV0cuts.cxx:1114
 AliHFEV0cuts.cxx:1115
 AliHFEV0cuts.cxx:1116
 AliHFEV0cuts.cxx:1117
 AliHFEV0cuts.cxx:1118
 AliHFEV0cuts.cxx:1119
 AliHFEV0cuts.cxx:1120
 AliHFEV0cuts.cxx:1121
 AliHFEV0cuts.cxx:1122
 AliHFEV0cuts.cxx:1123
 AliHFEV0cuts.cxx:1124
 AliHFEV0cuts.cxx:1125
 AliHFEV0cuts.cxx:1126
 AliHFEV0cuts.cxx:1127
 AliHFEV0cuts.cxx:1128
 AliHFEV0cuts.cxx:1129
 AliHFEV0cuts.cxx:1130
 AliHFEV0cuts.cxx:1131
 AliHFEV0cuts.cxx:1132
 AliHFEV0cuts.cxx:1133
 AliHFEV0cuts.cxx:1134
 AliHFEV0cuts.cxx:1135
 AliHFEV0cuts.cxx:1136
 AliHFEV0cuts.cxx:1137
 AliHFEV0cuts.cxx:1138
 AliHFEV0cuts.cxx:1139
 AliHFEV0cuts.cxx:1140
 AliHFEV0cuts.cxx:1141
 AliHFEV0cuts.cxx:1142
 AliHFEV0cuts.cxx:1143
 AliHFEV0cuts.cxx:1144
 AliHFEV0cuts.cxx:1145
 AliHFEV0cuts.cxx:1146
 AliHFEV0cuts.cxx:1147
 AliHFEV0cuts.cxx:1148
 AliHFEV0cuts.cxx:1149
 AliHFEV0cuts.cxx:1150
 AliHFEV0cuts.cxx:1151
 AliHFEV0cuts.cxx:1152
 AliHFEV0cuts.cxx:1153
 AliHFEV0cuts.cxx:1154
 AliHFEV0cuts.cxx:1155
 AliHFEV0cuts.cxx:1156
 AliHFEV0cuts.cxx:1157
 AliHFEV0cuts.cxx:1158
 AliHFEV0cuts.cxx:1159
 AliHFEV0cuts.cxx:1160
 AliHFEV0cuts.cxx:1161
 AliHFEV0cuts.cxx:1162
 AliHFEV0cuts.cxx:1163
 AliHFEV0cuts.cxx:1164
 AliHFEV0cuts.cxx:1165
 AliHFEV0cuts.cxx:1166
 AliHFEV0cuts.cxx:1167
 AliHFEV0cuts.cxx:1168
 AliHFEV0cuts.cxx:1169
 AliHFEV0cuts.cxx:1170
 AliHFEV0cuts.cxx:1171
 AliHFEV0cuts.cxx:1172
 AliHFEV0cuts.cxx:1173
 AliHFEV0cuts.cxx:1174
 AliHFEV0cuts.cxx:1175
 AliHFEV0cuts.cxx:1176
 AliHFEV0cuts.cxx:1177
 AliHFEV0cuts.cxx:1178
 AliHFEV0cuts.cxx:1179
 AliHFEV0cuts.cxx:1180
 AliHFEV0cuts.cxx:1181
 AliHFEV0cuts.cxx:1182
 AliHFEV0cuts.cxx:1183
 AliHFEV0cuts.cxx:1184
 AliHFEV0cuts.cxx:1185
 AliHFEV0cuts.cxx:1186
 AliHFEV0cuts.cxx:1187
 AliHFEV0cuts.cxx:1188
 AliHFEV0cuts.cxx:1189
 AliHFEV0cuts.cxx:1190
 AliHFEV0cuts.cxx:1191
 AliHFEV0cuts.cxx:1192
 AliHFEV0cuts.cxx:1193
 AliHFEV0cuts.cxx:1194
 AliHFEV0cuts.cxx:1195
 AliHFEV0cuts.cxx:1196
 AliHFEV0cuts.cxx:1197
 AliHFEV0cuts.cxx:1198
 AliHFEV0cuts.cxx:1199
 AliHFEV0cuts.cxx:1200
 AliHFEV0cuts.cxx:1201
 AliHFEV0cuts.cxx:1202
 AliHFEV0cuts.cxx:1203
 AliHFEV0cuts.cxx:1204
 AliHFEV0cuts.cxx:1205
 AliHFEV0cuts.cxx:1206
 AliHFEV0cuts.cxx:1207
 AliHFEV0cuts.cxx:1208
 AliHFEV0cuts.cxx:1209
 AliHFEV0cuts.cxx:1210
 AliHFEV0cuts.cxx:1211
 AliHFEV0cuts.cxx:1212
 AliHFEV0cuts.cxx:1213
 AliHFEV0cuts.cxx:1214
 AliHFEV0cuts.cxx:1215
 AliHFEV0cuts.cxx:1216
 AliHFEV0cuts.cxx:1217
 AliHFEV0cuts.cxx:1218
 AliHFEV0cuts.cxx:1219
 AliHFEV0cuts.cxx:1220
 AliHFEV0cuts.cxx:1221
 AliHFEV0cuts.cxx:1222
 AliHFEV0cuts.cxx:1223
 AliHFEV0cuts.cxx:1224
 AliHFEV0cuts.cxx:1225
 AliHFEV0cuts.cxx:1226
 AliHFEV0cuts.cxx:1227
 AliHFEV0cuts.cxx:1228
 AliHFEV0cuts.cxx:1229
 AliHFEV0cuts.cxx:1230
 AliHFEV0cuts.cxx:1231
 AliHFEV0cuts.cxx:1232
 AliHFEV0cuts.cxx:1233
 AliHFEV0cuts.cxx:1234
 AliHFEV0cuts.cxx:1235
 AliHFEV0cuts.cxx:1236
 AliHFEV0cuts.cxx:1237
 AliHFEV0cuts.cxx:1238
 AliHFEV0cuts.cxx:1239
 AliHFEV0cuts.cxx:1240
 AliHFEV0cuts.cxx:1241
 AliHFEV0cuts.cxx:1242
 AliHFEV0cuts.cxx:1243
 AliHFEV0cuts.cxx:1244
 AliHFEV0cuts.cxx:1245
 AliHFEV0cuts.cxx:1246
 AliHFEV0cuts.cxx:1247
 AliHFEV0cuts.cxx:1248
 AliHFEV0cuts.cxx:1249
 AliHFEV0cuts.cxx:1250
 AliHFEV0cuts.cxx:1251
 AliHFEV0cuts.cxx:1252
 AliHFEV0cuts.cxx:1253
 AliHFEV0cuts.cxx:1254
 AliHFEV0cuts.cxx:1255
 AliHFEV0cuts.cxx:1256
 AliHFEV0cuts.cxx:1257
 AliHFEV0cuts.cxx:1258
 AliHFEV0cuts.cxx:1259
 AliHFEV0cuts.cxx:1260
 AliHFEV0cuts.cxx:1261
 AliHFEV0cuts.cxx:1262
 AliHFEV0cuts.cxx:1263
 AliHFEV0cuts.cxx:1264
 AliHFEV0cuts.cxx:1265
 AliHFEV0cuts.cxx:1266
 AliHFEV0cuts.cxx:1267
 AliHFEV0cuts.cxx:1268
 AliHFEV0cuts.cxx:1269
 AliHFEV0cuts.cxx:1270
 AliHFEV0cuts.cxx:1271
 AliHFEV0cuts.cxx:1272
 AliHFEV0cuts.cxx:1273
 AliHFEV0cuts.cxx:1274
 AliHFEV0cuts.cxx:1275
 AliHFEV0cuts.cxx:1276
 AliHFEV0cuts.cxx:1277
 AliHFEV0cuts.cxx:1278
 AliHFEV0cuts.cxx:1279
 AliHFEV0cuts.cxx:1280
 AliHFEV0cuts.cxx:1281
 AliHFEV0cuts.cxx:1282
 AliHFEV0cuts.cxx:1283
 AliHFEV0cuts.cxx:1284
 AliHFEV0cuts.cxx:1285
 AliHFEV0cuts.cxx:1286
 AliHFEV0cuts.cxx:1287
 AliHFEV0cuts.cxx:1288
 AliHFEV0cuts.cxx:1289
 AliHFEV0cuts.cxx:1290
 AliHFEV0cuts.cxx:1291
 AliHFEV0cuts.cxx:1292
 AliHFEV0cuts.cxx:1293
 AliHFEV0cuts.cxx:1294
 AliHFEV0cuts.cxx:1295
 AliHFEV0cuts.cxx:1296
 AliHFEV0cuts.cxx:1297
 AliHFEV0cuts.cxx:1298
 AliHFEV0cuts.cxx:1299
 AliHFEV0cuts.cxx:1300
 AliHFEV0cuts.cxx:1301
 AliHFEV0cuts.cxx:1302
 AliHFEV0cuts.cxx:1303
 AliHFEV0cuts.cxx:1304
 AliHFEV0cuts.cxx:1305
 AliHFEV0cuts.cxx:1306
 AliHFEV0cuts.cxx:1307
 AliHFEV0cuts.cxx:1308
 AliHFEV0cuts.cxx:1309
 AliHFEV0cuts.cxx:1310
 AliHFEV0cuts.cxx:1311
 AliHFEV0cuts.cxx:1312
 AliHFEV0cuts.cxx:1313
 AliHFEV0cuts.cxx:1314
 AliHFEV0cuts.cxx:1315
 AliHFEV0cuts.cxx:1316
 AliHFEV0cuts.cxx:1317
 AliHFEV0cuts.cxx:1318
 AliHFEV0cuts.cxx:1319
 AliHFEV0cuts.cxx:1320
 AliHFEV0cuts.cxx:1321
 AliHFEV0cuts.cxx:1322
 AliHFEV0cuts.cxx:1323
 AliHFEV0cuts.cxx:1324
 AliHFEV0cuts.cxx:1325
 AliHFEV0cuts.cxx:1326
 AliHFEV0cuts.cxx:1327
 AliHFEV0cuts.cxx:1328
 AliHFEV0cuts.cxx:1329
 AliHFEV0cuts.cxx:1330
 AliHFEV0cuts.cxx:1331
 AliHFEV0cuts.cxx:1332
 AliHFEV0cuts.cxx:1333
 AliHFEV0cuts.cxx:1334
 AliHFEV0cuts.cxx:1335
 AliHFEV0cuts.cxx:1336
 AliHFEV0cuts.cxx:1337
 AliHFEV0cuts.cxx:1338
 AliHFEV0cuts.cxx:1339
 AliHFEV0cuts.cxx:1340
 AliHFEV0cuts.cxx:1341
 AliHFEV0cuts.cxx:1342
 AliHFEV0cuts.cxx:1343
 AliHFEV0cuts.cxx:1344
 AliHFEV0cuts.cxx:1345
 AliHFEV0cuts.cxx:1346
 AliHFEV0cuts.cxx:1347
 AliHFEV0cuts.cxx:1348
 AliHFEV0cuts.cxx:1349
 AliHFEV0cuts.cxx:1350
 AliHFEV0cuts.cxx:1351
 AliHFEV0cuts.cxx:1352
 AliHFEV0cuts.cxx:1353
 AliHFEV0cuts.cxx:1354
 AliHFEV0cuts.cxx:1355
 AliHFEV0cuts.cxx:1356
 AliHFEV0cuts.cxx:1357
 AliHFEV0cuts.cxx:1358
 AliHFEV0cuts.cxx:1359
 AliHFEV0cuts.cxx:1360
 AliHFEV0cuts.cxx:1361
 AliHFEV0cuts.cxx:1362
 AliHFEV0cuts.cxx:1363
 AliHFEV0cuts.cxx:1364
 AliHFEV0cuts.cxx:1365
 AliHFEV0cuts.cxx:1366
 AliHFEV0cuts.cxx:1367
 AliHFEV0cuts.cxx:1368
 AliHFEV0cuts.cxx:1369
 AliHFEV0cuts.cxx:1370
 AliHFEV0cuts.cxx:1371
 AliHFEV0cuts.cxx:1372
 AliHFEV0cuts.cxx:1373
 AliHFEV0cuts.cxx:1374
 AliHFEV0cuts.cxx:1375
 AliHFEV0cuts.cxx:1376
 AliHFEV0cuts.cxx:1377
 AliHFEV0cuts.cxx:1378
 AliHFEV0cuts.cxx:1379
 AliHFEV0cuts.cxx:1380
 AliHFEV0cuts.cxx:1381
 AliHFEV0cuts.cxx:1382
 AliHFEV0cuts.cxx:1383
 AliHFEV0cuts.cxx:1384
 AliHFEV0cuts.cxx:1385
 AliHFEV0cuts.cxx:1386
 AliHFEV0cuts.cxx:1387
 AliHFEV0cuts.cxx:1388
 AliHFEV0cuts.cxx:1389
 AliHFEV0cuts.cxx:1390
 AliHFEV0cuts.cxx:1391
 AliHFEV0cuts.cxx:1392
 AliHFEV0cuts.cxx:1393
 AliHFEV0cuts.cxx:1394
 AliHFEV0cuts.cxx:1395
 AliHFEV0cuts.cxx:1396
 AliHFEV0cuts.cxx:1397
 AliHFEV0cuts.cxx:1398
 AliHFEV0cuts.cxx:1399
 AliHFEV0cuts.cxx:1400
 AliHFEV0cuts.cxx:1401
 AliHFEV0cuts.cxx:1402
 AliHFEV0cuts.cxx:1403
 AliHFEV0cuts.cxx:1404
 AliHFEV0cuts.cxx:1405
 AliHFEV0cuts.cxx:1406
 AliHFEV0cuts.cxx:1407
 AliHFEV0cuts.cxx:1408
 AliHFEV0cuts.cxx:1409
 AliHFEV0cuts.cxx:1410
 AliHFEV0cuts.cxx:1411
 AliHFEV0cuts.cxx:1412
 AliHFEV0cuts.cxx:1413
 AliHFEV0cuts.cxx:1414
 AliHFEV0cuts.cxx:1415
 AliHFEV0cuts.cxx:1416
 AliHFEV0cuts.cxx:1417
 AliHFEV0cuts.cxx:1418
 AliHFEV0cuts.cxx:1419
 AliHFEV0cuts.cxx:1420
 AliHFEV0cuts.cxx:1421
 AliHFEV0cuts.cxx:1422
 AliHFEV0cuts.cxx:1423
 AliHFEV0cuts.cxx:1424
 AliHFEV0cuts.cxx:1425
 AliHFEV0cuts.cxx:1426
 AliHFEV0cuts.cxx:1427
 AliHFEV0cuts.cxx:1428
 AliHFEV0cuts.cxx:1429
 AliHFEV0cuts.cxx:1430
 AliHFEV0cuts.cxx:1431
 AliHFEV0cuts.cxx:1432
 AliHFEV0cuts.cxx:1433
 AliHFEV0cuts.cxx:1434
 AliHFEV0cuts.cxx:1435
 AliHFEV0cuts.cxx:1436
 AliHFEV0cuts.cxx:1437
 AliHFEV0cuts.cxx:1438
 AliHFEV0cuts.cxx:1439
 AliHFEV0cuts.cxx:1440
 AliHFEV0cuts.cxx:1441
 AliHFEV0cuts.cxx:1442
 AliHFEV0cuts.cxx:1443
 AliHFEV0cuts.cxx:1444
 AliHFEV0cuts.cxx:1445
 AliHFEV0cuts.cxx:1446
 AliHFEV0cuts.cxx:1447
 AliHFEV0cuts.cxx:1448
 AliHFEV0cuts.cxx:1449
 AliHFEV0cuts.cxx:1450
 AliHFEV0cuts.cxx:1451
 AliHFEV0cuts.cxx:1452
 AliHFEV0cuts.cxx:1453
 AliHFEV0cuts.cxx:1454
 AliHFEV0cuts.cxx:1455
 AliHFEV0cuts.cxx:1456
 AliHFEV0cuts.cxx:1457
 AliHFEV0cuts.cxx:1458
 AliHFEV0cuts.cxx:1459
 AliHFEV0cuts.cxx:1460
 AliHFEV0cuts.cxx:1461
 AliHFEV0cuts.cxx:1462
 AliHFEV0cuts.cxx:1463
 AliHFEV0cuts.cxx:1464
 AliHFEV0cuts.cxx:1465
 AliHFEV0cuts.cxx:1466
 AliHFEV0cuts.cxx:1467
 AliHFEV0cuts.cxx:1468
 AliHFEV0cuts.cxx:1469
 AliHFEV0cuts.cxx:1470
 AliHFEV0cuts.cxx:1471
 AliHFEV0cuts.cxx:1472
 AliHFEV0cuts.cxx:1473
 AliHFEV0cuts.cxx:1474
 AliHFEV0cuts.cxx:1475
 AliHFEV0cuts.cxx:1476
 AliHFEV0cuts.cxx:1477
 AliHFEV0cuts.cxx:1478
 AliHFEV0cuts.cxx:1479
 AliHFEV0cuts.cxx:1480
 AliHFEV0cuts.cxx:1481
 AliHFEV0cuts.cxx:1482
 AliHFEV0cuts.cxx:1483
 AliHFEV0cuts.cxx:1484
 AliHFEV0cuts.cxx:1485
 AliHFEV0cuts.cxx:1486
 AliHFEV0cuts.cxx:1487
 AliHFEV0cuts.cxx:1488
 AliHFEV0cuts.cxx:1489
 AliHFEV0cuts.cxx:1490
 AliHFEV0cuts.cxx:1491
 AliHFEV0cuts.cxx:1492
 AliHFEV0cuts.cxx:1493
 AliHFEV0cuts.cxx:1494
 AliHFEV0cuts.cxx:1495
 AliHFEV0cuts.cxx:1496
 AliHFEV0cuts.cxx:1497
 AliHFEV0cuts.cxx:1498
 AliHFEV0cuts.cxx:1499
 AliHFEV0cuts.cxx:1500
 AliHFEV0cuts.cxx:1501
 AliHFEV0cuts.cxx:1502
 AliHFEV0cuts.cxx:1503
 AliHFEV0cuts.cxx:1504
 AliHFEV0cuts.cxx:1505
 AliHFEV0cuts.cxx:1506
 AliHFEV0cuts.cxx:1507
 AliHFEV0cuts.cxx:1508
 AliHFEV0cuts.cxx:1509
 AliHFEV0cuts.cxx:1510
 AliHFEV0cuts.cxx:1511
 AliHFEV0cuts.cxx:1512
 AliHFEV0cuts.cxx:1513
 AliHFEV0cuts.cxx:1514
 AliHFEV0cuts.cxx:1515
 AliHFEV0cuts.cxx:1516
 AliHFEV0cuts.cxx:1517
 AliHFEV0cuts.cxx:1518
 AliHFEV0cuts.cxx:1519
 AliHFEV0cuts.cxx:1520
 AliHFEV0cuts.cxx:1521
 AliHFEV0cuts.cxx:1522
 AliHFEV0cuts.cxx:1523
 AliHFEV0cuts.cxx:1524
 AliHFEV0cuts.cxx:1525
 AliHFEV0cuts.cxx:1526
 AliHFEV0cuts.cxx:1527
 AliHFEV0cuts.cxx:1528
 AliHFEV0cuts.cxx:1529
 AliHFEV0cuts.cxx:1530
 AliHFEV0cuts.cxx:1531
 AliHFEV0cuts.cxx:1532
 AliHFEV0cuts.cxx:1533
 AliHFEV0cuts.cxx:1534
 AliHFEV0cuts.cxx:1535
 AliHFEV0cuts.cxx:1536
 AliHFEV0cuts.cxx:1537
 AliHFEV0cuts.cxx:1538
 AliHFEV0cuts.cxx:1539
 AliHFEV0cuts.cxx:1540
 AliHFEV0cuts.cxx:1541
 AliHFEV0cuts.cxx:1542
 AliHFEV0cuts.cxx:1543
 AliHFEV0cuts.cxx:1544
 AliHFEV0cuts.cxx:1545
 AliHFEV0cuts.cxx:1546
 AliHFEV0cuts.cxx:1547
 AliHFEV0cuts.cxx:1548
 AliHFEV0cuts.cxx:1549
 AliHFEV0cuts.cxx:1550
 AliHFEV0cuts.cxx:1551
 AliHFEV0cuts.cxx:1552
 AliHFEV0cuts.cxx:1553
 AliHFEV0cuts.cxx:1554
 AliHFEV0cuts.cxx:1555
 AliHFEV0cuts.cxx:1556
 AliHFEV0cuts.cxx:1557
 AliHFEV0cuts.cxx:1558
 AliHFEV0cuts.cxx:1559
 AliHFEV0cuts.cxx:1560
 AliHFEV0cuts.cxx:1561
 AliHFEV0cuts.cxx:1562
 AliHFEV0cuts.cxx:1563
 AliHFEV0cuts.cxx:1564
 AliHFEV0cuts.cxx:1565
 AliHFEV0cuts.cxx:1566
 AliHFEV0cuts.cxx:1567
 AliHFEV0cuts.cxx:1568
 AliHFEV0cuts.cxx:1569
 AliHFEV0cuts.cxx:1570
 AliHFEV0cuts.cxx:1571
 AliHFEV0cuts.cxx:1572
 AliHFEV0cuts.cxx:1573
 AliHFEV0cuts.cxx:1574
 AliHFEV0cuts.cxx:1575
 AliHFEV0cuts.cxx:1576
 AliHFEV0cuts.cxx:1577
 AliHFEV0cuts.cxx:1578
 AliHFEV0cuts.cxx:1579
 AliHFEV0cuts.cxx:1580
 AliHFEV0cuts.cxx:1581
 AliHFEV0cuts.cxx:1582
 AliHFEV0cuts.cxx:1583
 AliHFEV0cuts.cxx:1584
 AliHFEV0cuts.cxx:1585
 AliHFEV0cuts.cxx:1586
 AliHFEV0cuts.cxx:1587
 AliHFEV0cuts.cxx:1588
 AliHFEV0cuts.cxx:1589
 AliHFEV0cuts.cxx:1590
 AliHFEV0cuts.cxx:1591
 AliHFEV0cuts.cxx:1592
 AliHFEV0cuts.cxx:1593
 AliHFEV0cuts.cxx:1594
 AliHFEV0cuts.cxx:1595
 AliHFEV0cuts.cxx:1596
 AliHFEV0cuts.cxx:1597
 AliHFEV0cuts.cxx:1598
 AliHFEV0cuts.cxx:1599
 AliHFEV0cuts.cxx:1600
 AliHFEV0cuts.cxx:1601
 AliHFEV0cuts.cxx:1602
 AliHFEV0cuts.cxx:1603
 AliHFEV0cuts.cxx:1604
 AliHFEV0cuts.cxx:1605
 AliHFEV0cuts.cxx:1606
 AliHFEV0cuts.cxx:1607
 AliHFEV0cuts.cxx:1608
 AliHFEV0cuts.cxx:1609
 AliHFEV0cuts.cxx:1610
 AliHFEV0cuts.cxx:1611
 AliHFEV0cuts.cxx:1612
 AliHFEV0cuts.cxx:1613
 AliHFEV0cuts.cxx:1614
 AliHFEV0cuts.cxx:1615
 AliHFEV0cuts.cxx:1616
 AliHFEV0cuts.cxx:1617
 AliHFEV0cuts.cxx:1618
 AliHFEV0cuts.cxx:1619
 AliHFEV0cuts.cxx:1620
 AliHFEV0cuts.cxx:1621
 AliHFEV0cuts.cxx:1622
 AliHFEV0cuts.cxx:1623
 AliHFEV0cuts.cxx:1624
 AliHFEV0cuts.cxx:1625
 AliHFEV0cuts.cxx:1626
 AliHFEV0cuts.cxx:1627
 AliHFEV0cuts.cxx:1628
 AliHFEV0cuts.cxx:1629
 AliHFEV0cuts.cxx:1630
 AliHFEV0cuts.cxx:1631
 AliHFEV0cuts.cxx:1632
 AliHFEV0cuts.cxx:1633
 AliHFEV0cuts.cxx:1634
 AliHFEV0cuts.cxx:1635
 AliHFEV0cuts.cxx:1636
 AliHFEV0cuts.cxx:1637
 AliHFEV0cuts.cxx:1638
 AliHFEV0cuts.cxx:1639
 AliHFEV0cuts.cxx:1640
 AliHFEV0cuts.cxx:1641
 AliHFEV0cuts.cxx:1642