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

//-----------------------------------------------------------------------
// Class for HF corrections as a function of many variables and steps
// For D* and other cascades
//
// Author : A.Grelli a.grelli@uu.nl  UTECHT
//-----------------------------------------------------------------------

#include "AliAODRecoDecayHF2Prong.h"
#include "AliAODMCParticle.h"
#include "AliAODEvent.h"
#include "TClonesArray.h"
#include "AliCFVertexingHF.h"
#include "AliESDtrack.h"
#include "TDatabasePDG.h"
#include "AliAODRecoCascadeHF.h"
#include "AliCFVertexingHFCascade.h"
#include "AliCFContainer.h"
#include "AliCFTaskVertexingHF.h"
#include "AliPIDResponse.h"
#include "AliPID.h"

ClassImp(AliCFVertexingHFCascade)


//_________________________________________
AliCFVertexingHFCascade::AliCFVertexingHFCascade():
AliCFVertexingHF(),
  fPDGcascade(0),
  fPDGbachelor(0),
  fPDGneutrDaugh(0),
  fPDGneutrDaughForMC(0),
  fPDGneutrDaughPositive(0),
  fPDGneutrDaughNegative(0),
  fPrimVtx(0x0),
  fUseCutsForTMVA(kFALSE),
  fCutOnMomConservation(0.00001)
{
  // default constructor

  SetNProngs(3);
  fPtAccCut = new Float_t[fProngs];
  fEtaAccCut = new Float_t[fProngs];
  // element 0 in the cut arrays corresponds to the soft pion!!!!!!!! Careful when setting the values...
  fPtAccCut[0] = 0.;
  fEtaAccCut[0] = 0.;
  for(Int_t iP=1; iP<fProngs; iP++){
    fPtAccCut[iP] = 0.1;
    fEtaAccCut[iP] = 0.9;
  }

}

//_________________________________________
AliCFVertexingHFCascade::AliCFVertexingHFCascade(TClonesArray *mcArray, UShort_t originDselection):
AliCFVertexingHF(mcArray, originDselection),
  fPDGcascade(0),
  fPDGbachelor(0),
  fPDGneutrDaugh(0),
  fPDGneutrDaughForMC(0),
  fPDGneutrDaughPositive(0),
  fPDGneutrDaughNegative(0),
  fPrimVtx(0x0),
  fUseCutsForTMVA(kFALSE),
  fCutOnMomConservation(0.00001)
{
  // standard constructor

  SetNProngs(3);
  fPtAccCut = new Float_t[fProngs];
  fEtaAccCut = new Float_t[fProngs];
  // element 0 in the cut arrays corresponds to the soft pion!!!!!!!! Careful when setting the values...
  fPtAccCut[0] = 0.;
  fEtaAccCut[0] = 0.;
  for(Int_t iP=1; iP<fProngs; iP++){
    fPtAccCut[iP] = 0.1;
    fEtaAccCut[iP] = 0.9;
  }

}


//_____________________________________
AliCFVertexingHFCascade& AliCFVertexingHFCascade::operator=(const AliCFVertexingHFCascade& c)
{
  // operator =
 
  if  (this != &c) {

    AliCFVertexingHF::operator=(c);

  }
  return *this;
}

//__________________________________________
Bool_t AliCFVertexingHFCascade::SetRecoCandidateParam(AliAODRecoDecayHF *recoCand)
{
  // set the AliAODRecoDecay candidate

  Bool_t bSignAssoc = kFALSE;

  fRecoCandidate = recoCand;
  AliAODRecoCascadeHF* cascade = (AliAODRecoCascadeHF*)recoCand;

  if (!fRecoCandidate) {
    AliError("fRecoCandidate not found, problem in assignement\n");
    return bSignAssoc;
  }

  if ( fRecoCandidate->GetPrimaryVtx()) AliDebug(3,"fReco Candidate has a pointer to PrimVtx\n");

  //Int_t pdgCand = 413;

  Int_t pdgDgCascade[2] = {fPDGneutrDaugh, fPDGbachelor};
  Int_t pdgDgNeutrDaugh[2] = {fPDGneutrDaughPositive, fPDGneutrDaughNegative};

  Int_t nentries = fmcArray->GetEntriesFast();

  AliDebug(3,Form("nentries = %d\n", nentries));
 
  Bool_t isV0 = kFALSE;
  if (fPDGcascade == 4122) {
    isV0 = kTRUE;
    pdgDgCascade[0] = fPDGbachelor;
    pdgDgCascade[1] = fPDGneutrDaugh;
  }
  AliDebug(3, Form("calling MatchToMC with: fPDGcascade = %d, fPDGneutrDaugh = %d, pdgDgCascade[0] = %d, pdgDgCascade[1] = %d, pdgDgNeutrDaugh[0] = %d, pdgDgNeutrDaugh[1] = %d, fmcArray = %p", fPDGcascade, fPDGneutrDaugh, pdgDgCascade[0], pdgDgCascade[1], pdgDgNeutrDaugh[0], pdgDgNeutrDaugh[1], fmcArray));
 Int_t mcLabel = cascade->MatchToMC(fPDGcascade, fPDGneutrDaugh, pdgDgCascade, pdgDgNeutrDaugh, fmcArray, isV0); 
  
  if (mcLabel == -1) return bSignAssoc;

  if (fRecoCandidate->NumberOfFakeDaughters()>0){
    fFake = 0;    // fake candidate
    if (fFakeSelection == 1) return bSignAssoc;
  }
  if (fRecoCandidate->NumberOfFakeDaughters()==0){
    fFake = 2;    // non-fake candidate
    if (fFakeSelection == 2) return bSignAssoc;
  }
  
  SetMCLabel(mcLabel);
  fmcPartCandidate = dynamic_cast<AliAODMCParticle*>(fmcArray->At(fmcLabel)); 

  if (!fmcPartCandidate){
    AliDebug(3,"No part candidate");
    return bSignAssoc;
  }
 
  bSignAssoc = kTRUE;
  return bSignAssoc;
}

//______________________________________________
Bool_t AliCFVertexingHFCascade::GetGeneratedValuesFromMCParticle(Double_t* vectorMC) 
{
  // 
  // collecting all the necessary info (pt, y, cosThetaStar, ptPi, ptKa, cT) from MC particle
  //

  Bool_t bGenValues = kFALSE;

  Int_t daughter0cascade = fmcPartCandidate->GetDaughter(0);
  Int_t daughter1cascade = fmcPartCandidate->GetDaughter(1);

  AliAODMCParticle* mcPartDaughter0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter0cascade));
  AliAODMCParticle* mcPartDaughter1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter1cascade));
  AliAODMCParticle* mcPartDaughterNeutrDaugh = NULL;
  AliAODMCParticle* mcPartDaughterBachelor = NULL;

  // the Neutral Particle (e.g. D0 for D*, K0S for Lc...)
  // for D* the D0 (the neutral) is the first daughter, while for Lc the V0 is the second, so we check the 
  // charge of the daughters to decide which is which
  if (mcPartDaughter0->Charge()/3 == 0){
    mcPartDaughterNeutrDaugh = mcPartDaughter0;
    mcPartDaughterBachelor =  mcPartDaughter1;
  }
  else {
    mcPartDaughterNeutrDaugh = mcPartDaughter1;
    mcPartDaughterBachelor =  mcPartDaughter0;
  }

  if (!mcPartDaughterNeutrDaugh || !mcPartDaughterBachelor) return kFALSE;

  Double_t vtx1[3] = {0,0,0};   // primary vertex
  Double_t vtx2daughter0[3] = {0,0,0};   // secondary vertex from daughter 0
  Double_t vtx2daughter1[3] = {0,0,0};   // secondary vertex from daughter 1
  fmcPartCandidate->XvYvZv(vtx1);  // cm

  //Daughters of the neutral particle of the cascade
  Int_t daughter0 = mcPartDaughterNeutrDaugh->GetDaughter(0); // this is the positive
  Int_t daughter1 = mcPartDaughterNeutrDaugh->GetDaughter(1); // this is the negative

  AliAODMCParticle* mcPartNeutrDaughter0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter0));
  AliAODMCParticle* mcPartNeutrDaughter1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter1));

  if (!mcPartNeutrDaughter0 || !mcPartNeutrDaughter1) return kFALSE;

  // getting vertex from daughters
  mcPartNeutrDaughter0->XvYvZv(vtx2daughter0);  // cm
  mcPartNeutrDaughter1->XvYvZv(vtx2daughter1);  //cm
  if (TMath::Abs(vtx2daughter0[0] - vtx2daughter1[0])>1E-5 || TMath::Abs(vtx2daughter0[1]- vtx2daughter1[1])>1E-5 || TMath::Abs(vtx2daughter0[2] - vtx2daughter1[2])>1E-5) {
    AliError("Daughters have different secondary vertex, skipping the track");
    return bGenValues;
  }

  Int_t nprongs = 2;
  Short_t charge = 0;
  // always instantiate the AliAODRecoDecay with the positive daughter first, the negative second
  AliAODMCParticle* positiveDaugh = mcPartNeutrDaughter0;
  AliAODMCParticle* negativeDaugh = mcPartNeutrDaughter1;
  if (mcPartNeutrDaughter0->GetPdgCode() < 0 && mcPartNeutrDaughter1->GetPdgCode() > 0){
    // inverting in case the positive daughter is the second one
    positiveDaugh = mcPartNeutrDaughter1;
    negativeDaugh = mcPartNeutrDaughter0;
  }

  // getting the momentum from the daughters
  Double_t px[2] = {positiveDaugh->Px(), negativeDaugh->Px()};		
  Double_t py[2] = {positiveDaugh->Py(), negativeDaugh->Py()};		
  Double_t pz[2] = {positiveDaugh->Pz(), negativeDaugh->Pz()};

  Double_t d0[2] = {0.,0.};

  AliAODRecoDecayHF* decay = new AliAODRecoDecayHF(vtx1, vtx2daughter0, nprongs, charge, px, py, pz, d0);
	
  Double_t cosThetaStar = 0.;
  Double_t cosThetaStarNeutrDaugh = 0.;
  Double_t cosThetaStarNeutrDaughBar = 0.;
  cosThetaStarNeutrDaugh = decay->CosThetaStar(1, fPDGneutrDaugh, fPDGneutrDaughPositive, fPDGneutrDaughNegative);
  cosThetaStarNeutrDaughBar = decay->CosThetaStar(0, fPDGneutrDaugh, fPDGneutrDaughNegative, fPDGneutrDaughPositive);
  if (mcPartDaughterNeutrDaugh->GetPdgCode() == fPDGneutrDaughForMC){  // neutral particle
    AliDebug(3, Form("Neutral Daughter, with pdgprong0 = %d, pdgprong1 = %d", mcPartDaughter0->GetPdgCode(), mcPartDaughter1->GetPdgCode()));
    cosThetaStar = cosThetaStarNeutrDaugh;
  }
  else if (mcPartDaughterNeutrDaugh->GetPdgCode() == -fPDGneutrDaughForMC){  // neutral particle bar
    AliDebug(3, Form("Neutral Daughter, with pdgprong0 = %d, pdgprong1 = %d",mcPartDaughter0->GetPdgCode(),mcPartDaughter1->GetPdgCode()));
    cosThetaStar = cosThetaStarNeutrDaughBar;
  }
  else{
    AliWarning(Form("There are problems!! particle was expected to be either with pdg = %d or its antiparticle with pdg = %d, while we have a %d, check...", fPDGneutrDaughForMC, -fPDGneutrDaughForMC, mcPartDaughterNeutrDaugh->GetPdgCode()));
    delete decay;
    return vectorMC;
  }
  if (cosThetaStar < -1 || cosThetaStar > 1) {
    AliWarning(Form("Invalid value for cosine Theta star %f, returning", cosThetaStar));
    delete decay;
    return bGenValues;
  }
	
  Double_t vectorNeutrDaugh[2] = {0.,0.};

  // evaluate the correct cascade
  if (!EvaluateIfCorrectNeutrDaugh(mcPartDaughterNeutrDaugh, vectorNeutrDaugh)) {
    AliDebug(2, "Error! the Neutral Daughter MC doesn't have correct daughters!!");
    delete decay;
    return bGenValues;  
  }	

  //ct
  Double_t cT = decay->Ct(fPDGneutrDaugh);
  // // get the pT of the daughters
  // Double_t pTNeutrDaugh= 0.;
  // Double_t pTBachelor = 0.;
	
  // if (TMath::Abs(fmcPartCandidate->GetPdgCode()) == fPDGcascade) {
  //   pTNeutrDaugh = mcPartDaughterNeutrDaugh->Pt();
  //   pTBachelor = mcPartDaughterBachelor->Pt();
  // }

  AliDebug(3, Form("The candidate has pt = %f, y = %f", fmcPartCandidate->Pt(), fmcPartCandidate->Y()));

  switch (fConfiguration){
  case AliCFTaskVertexingHF::kSnail:
    vectorMC[0] = fmcPartCandidate->Pt();
    vectorMC[1] = fmcPartCandidate->Y() ;
    vectorMC[2] = cosThetaStar ;
    vectorMC[3] = vectorNeutrDaugh[0];
    vectorMC[4] = vectorNeutrDaugh[1];
    vectorMC[5] = cT*1.E4 ;  // in micron
    vectorMC[6] = 0.;   // dummy value, meaningless in MC
    vectorMC[7] = -100000.; // dummy value, meaningless in MC, in micron^2
    vectorMC[8] = 1.01;    // dummy value, meaningless in MC
    vectorMC[9] = fmcPartCandidate->Phi(); 
    vectorMC[10] = fzMCVertex;    // z of reconstructed of primary vertex
    vectorMC[11] = fCentValue; // reconstructed centrality
    vectorMC[12] = 1.;           // always filling with 1 at MC level 
    vectorMC[13] = 1.01; // dummy value for cosPointingXY  multiplicity
    vectorMC[14] = 0.; // dummy value for NormalizedDecayLengthXY multiplicity
    vectorMC[15] = fMultiplicity; // reconstructed multiplicity
    break;
  case AliCFTaskVertexingHF::kCheetah:
    vectorMC[0] = fmcPartCandidate->Pt();
    vectorMC[1] = fmcPartCandidate->Y() ;
    vectorMC[2] = cT*1.E4; // in micron
    vectorMC[3] = fmcPartCandidate->Phi();
    vectorMC[4] = fzMCVertex;
    vectorMC[5] = fCentValue;   // dummy value for dca, meaningless in MC
    vectorMC[6] = 1. ;  // fake: always filling with 1 at MC level 
    vectorMC[7] = fMultiplicity;   // dummy value for d0pi, meaningless in MC, in micron
    break;
  }

  delete decay;
  bGenValues = kTRUE;
  return bGenValues;
}
//____________________________________________
Bool_t AliCFVertexingHFCascade::GetRecoValuesFromCandidate(Double_t *vectorReco) const
{ 
  // read the variables for the container

  Bool_t bFillRecoValues = kFALSE;
  
  //Get the cascade and the neutral particle from it
  AliAODRecoCascadeHF* cascade = (AliAODRecoCascadeHF*)fRecoCandidate;
  AliAODRecoDecay* neutrDaugh = NULL; 
  if (fPDGcascade == 413) neutrDaugh = cascade->Get2Prong();
  else if (fPDGcascade == 4122) neutrDaugh = cascade->Getv0();
  else {
    return kFALSE;
  }

  //if (cascade->GetPrimaryVtx())printf("cascade has primary vtx\n");
  //if (fRecoCandidate->GetPrimaryVtx())printf("fRecoCandidateDstar has primary vtx\n");

  Double_t pt =  cascade->Pt();
  Double_t rapidity =  cascade->Y(fPDGcascade);
  // Double_t invMass = 0.;
  Double_t cosThetaStar = 9999.;
  Double_t pTneutrDaughPos = 0.;
  Double_t pTneutrDaughNeg = 0.;
  Double_t dca = neutrDaugh->GetDCA();
  // Double_t d0neutrDaughPos = 0.;
  // Double_t d0neutrDaughNeg = 0.;
  Double_t d0xd0 = neutrDaugh->Prodd0d0();
  Double_t cosPointingAngle = neutrDaugh->CosPointingAngle(fPrimVtx);
  Double_t phi = cascade->Phi();
  Double_t cosPointingAngleXY = neutrDaugh->CosPointingAngleXY(fPrimVtx);
  Double_t normDecayLengthXY = neutrDaugh->NormalizedDecayLengthXY(fPrimVtx);

  Int_t pdgCode = fmcPartCandidate->GetPdgCode();
 
  // UInt_t pdgDaughCascade[2] = { static_cast<UInt_t>(fPDGbachelor),  static_cast<UInt_t>(fPDGneutrDaugh) };    // bachelor is first daughter of cascade
  // UInt_t pdgDaughBarCascade[2] = { static_cast<UInt_t>(fPDGneutrDaugh),  static_cast<UInt_t>(fPDGbachelor) }; // bachelor is second daughter in case of a cascade-bar

  if (pdgCode > 0){
    cosThetaStar = neutrDaugh->CosThetaStar(1, fPDGneutrDaugh, fPDGneutrDaughPositive, fPDGneutrDaughNegative);
    pTneutrDaughPos = neutrDaugh->PtProng(0);
    pTneutrDaughNeg = neutrDaugh->PtProng(1);
    // d0neutrDaughPos = neutrDaugh->Getd0Prong(0);
    // d0neutrDaughNeg = neutrDaugh->Getd0Prong(1);
    // invMass = neutrDaugh->InvMass(2, pdgDaughCascade);
  }
  else {
    cosThetaStar = neutrDaugh->CosThetaStar(0, fPDGneutrDaugh, fPDGneutrDaughPositive, fPDGneutrDaughNegative);
    pTneutrDaughPos = neutrDaugh->PtProng(1);
    pTneutrDaughNeg = neutrDaugh->PtProng(0);
    // d0neutrDaughPos = neutrDaugh->Getd0Prong(1);
    // d0neutrDaughNeg = neutrDaugh->Getd0Prong(0);
    // invMass = neutrDaugh->InvMass(2, pdgDaughBarCascade);
  }
  
  Double_t cT = neutrDaugh->Ct(fPDGneutrDaugh, fPrimVtx);
  
  switch (fConfiguration){
  case AliCFTaskVertexingHF::kSnail:
    vectorReco[0] = pt;
    vectorReco[1] = rapidity;
    vectorReco[2] = cosThetaStar;
    vectorReco[3] = pTneutrDaughPos;
    vectorReco[4] = pTneutrDaughNeg;
    vectorReco[5] = cT*1.E4;  // in micron
    vectorReco[6] = dca*1.E4;  // in micron
    vectorReco[7] = d0xd0*1.E8;  // in micron^2
    vectorReco[8] = cosPointingAngle;  // in micron
    vectorReco[9] = phi;
    vectorReco[10] = fzPrimVertex;    // z of reconstructed of primary vertex
    vectorReco[11] = fCentValue;
    vectorReco[12] = fFake;      // whether the reconstructed candidate was a fake (fFake = 0) or not (fFake = 2) 
    vectorReco[13] = cosPointingAngleXY;
    vectorReco[14] = normDecayLengthXY; // in cm
    vectorReco[15] = fMultiplicity; // reconstructed multiplicity
    break;
  case AliCFTaskVertexingHF::kCheetah:
    vectorReco[0] = pt;
    vectorReco[1] = rapidity;
    vectorReco[2] = cT*1.E4; // in micron
    vectorReco[3] = phi;
    vectorReco[4] = fzPrimVertex;
    vectorReco[5] = fCentValue;
    vectorReco[6] = fFake;
    vectorReco[7] = fMultiplicity; 
    break;
  }

  bFillRecoValues = kTRUE;

  return bFillRecoValues;
}


//_____________________________________________________________
Bool_t AliCFVertexingHFCascade::CheckMCChannelDecay() const
{ 
  // check the required decay channel

  Bool_t checkCD = kFALSE;
  
  Int_t daughter0 = fmcPartCandidate->GetDaughter(0);
  Int_t daughter1 = fmcPartCandidate->GetDaughter(1);
  AliAODMCParticle* mcPartDaughter0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter0));
  AliAODMCParticle* mcPartDaughter1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter1));

  if (!mcPartDaughter0 || !mcPartDaughter1) {
    AliDebug (2,"Problems in the MC Daughters\n");
    return checkCD;
  }

  if(TMath::Abs(fmcPartCandidate->GetPdgCode()) == 4122 && (daughter1 - daughter0 != 1)) {
    AliDebug(2, Form("The MC particle doesn't have the correct daughters!!"));
    return checkCD;
  }

  if (!(TMath::Abs(mcPartDaughter0->GetPdgCode()) == fPDGneutrDaughForMC &&
	TMath::Abs(mcPartDaughter1->GetPdgCode()) == fPDGbachelor) && 
      !(TMath::Abs(mcPartDaughter0->GetPdgCode()) == fPDGbachelor &&
	TMath::Abs(mcPartDaughter1->GetPdgCode()) == fPDGneutrDaughForMC)) {
    AliDebug(2, Form("The cascade MC doesn't come from a the decay under study, skipping!! (Pdg codes of daughters = %d, %d)", mcPartDaughter0->GetPdgCode(), mcPartDaughter1->GetPdgCode()));
    return checkCD;  
  }
  
  // the Neutral Particle (e.g. D0 for D*, K0S for Lc...)
  AliAODMCParticle* mcPartDaughterNeutrDaugh = NULL;

  // for D* the D0 (the neutral) is the first daughter, while for Lc the V0 is the second, so we check the 
  // charge of teh daughters to decide which is which
  AliDebug(3, Form("Charge0 = %d, Charge1 = %d", mcPartDaughter0->Charge()/3, mcPartDaughter1->Charge()/3));
  if (mcPartDaughter0->Charge()/3 != 0){
    mcPartDaughterNeutrDaugh = mcPartDaughter1;
  }
  else {
    mcPartDaughterNeutrDaugh = mcPartDaughter0;
  }

  Double_t vectorNeutrDaugh[2] ={0., 0.};

  // We are looking at a cascade ...evaluate the correct cascade
  if (!EvaluateIfCorrectNeutrDaugh(mcPartDaughterNeutrDaugh, vectorNeutrDaugh)) {
    AliDebug(2, "Error! the NeutrDaugh MC doesn't have correct daughters!!");
    return checkCD;  
  }
   
  checkCD = kTRUE;
  return checkCD;
  
}

//__________________________________________
Bool_t AliCFVertexingHFCascade::EvaluateIfCorrectNeutrDaugh(AliAODMCParticle* neutralDaugh, Double_t* vectorNeutrDaugh)const
{  
  //
  // check wether D0 is decaing into kpi
  //
  
  Bool_t isHadronic = kFALSE;
  AliDebug(2, Form("neutralDaugh = %p, pdg = %d", neutralDaugh, neutralDaugh->GetPdgCode()));

  if (fPDGcascade == 4122) {
    Int_t labelresonanceDaugh = neutralDaugh->GetDaughter(0);
    AliAODMCParticle* resonanceDaugh = dynamic_cast<AliAODMCParticle*>(fmcArray->At(labelresonanceDaugh));
    if (!resonanceDaugh){
      return kFALSE;
    }
    else {
      AliDebug(3, Form("The daughter of the resonant particle is a %d (we are looking for a %d)", resonanceDaugh->GetPdgCode(), fPDGneutrDaugh));
      if (TMath::Abs(resonanceDaugh->GetPdgCode()) != fPDGneutrDaugh){
	return kFALSE;
      }
      else {
	neutralDaugh = resonanceDaugh;
      }
    }
  }

  Int_t daughterNeutrDaugh0 = neutralDaugh->GetDaughter(0);
  Int_t daughterNeutrDaugh1 = neutralDaugh->GetDaughter(1);
  
  AliDebug(2, Form("daughter0 = %d and daughter1 = %d", daughterNeutrDaugh0, daughterNeutrDaugh1));
  if (daughterNeutrDaugh0 == 0 || daughterNeutrDaugh1 == 0) {
    AliDebug(2, "Error! the D0 MC doesn't have correct daughters!!");
    return isHadronic;  
  }
  
  Int_t numberOfExpectedDaughters = 2;
  if (TMath::Abs(daughterNeutrDaugh1 - daughterNeutrDaugh0) != numberOfExpectedDaughters-1) { // should be everytime true - see PDGdatabooklet
    AliDebug(2, "The D0 MC doesn't come from a 2-prong decay, skipping!!");
    return isHadronic;  
  }
  
  AliAODMCParticle* mcPartDaughterNeutrDaugh0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughterNeutrDaugh0));
  AliAODMCParticle* mcPartDaughterNeutrDaugh1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughterNeutrDaugh1));
  if (!mcPartDaughterNeutrDaugh0 || !mcPartDaughterNeutrDaugh1) {
    AliWarning("D0 MC analysis: At least one Daughter Particle not found in tree, skipping"); 
    return isHadronic;  
  }
  
  AliDebug(3, Form("Daughter 0 has pdg = %d, daughter 1 has pdg = %d", mcPartDaughterNeutrDaugh0->GetPdgCode(), mcPartDaughterNeutrDaugh1->GetPdgCode()));
  if (!(TMath::Abs(mcPartDaughterNeutrDaugh0->GetPdgCode()) == fPDGneutrDaughPositive &&
	TMath::Abs(mcPartDaughterNeutrDaugh1->GetPdgCode()) == fPDGneutrDaughNegative) && 
      !(TMath::Abs(mcPartDaughterNeutrDaugh0->GetPdgCode()) == fPDGneutrDaughNegative &&
	TMath::Abs(mcPartDaughterNeutrDaugh1->GetPdgCode()) == fPDGneutrDaughPositive)) {
    AliDebug(2, "The neutral particle (MC) doesn't come from the required decay, skipping!!");
    return isHadronic;  
  }
  
  Double_t sumPxDau = mcPartDaughterNeutrDaugh0->Px()+mcPartDaughterNeutrDaugh1->Px();
  Double_t sumPyDau = mcPartDaughterNeutrDaugh0->Py()+mcPartDaughterNeutrDaugh1->Py();
  Double_t sumPzDau = mcPartDaughterNeutrDaugh0->Pz()+mcPartDaughterNeutrDaugh1->Pz();
  Double_t pxMother = neutralDaugh->Px();
  Double_t pyMother = neutralDaugh->Py();
  Double_t pzMother = neutralDaugh->Pz();
  AliDebug(3, Form("pxMother = %f, pyMother = %f, pzMother = %f", pxMother, pyMother, pzMother));
  AliDebug(3, Form("sumPxDau = %f, sumPyDau = %f, sumPzDau = %f", sumPxDau, sumPyDau, sumPzDau));
  if(TMath::Abs(pxMother-sumPxDau)/(TMath::Abs(pxMother)+1.e-13)>fCutOnMomConservation ||
     TMath::Abs(pyMother-sumPyDau)/(TMath::Abs(pyMother)+1.e-13)>fCutOnMomConservation ||
     TMath::Abs(pzMother-sumPzDau)/(TMath::Abs(pzMother)+1.e-13)>fCutOnMomConservation){
    AliDebug(2, "Momentum conservation violated, skipping!!");
    return isHadronic;  
  }

  Double_t pTNeutrDaughPositive = 0;
  Double_t pTNeutrDaughNegative = 0;
  
  if (mcPartDaughterNeutrDaugh0->GetPdgCode() > 0 ) {
    pTNeutrDaughPositive = mcPartDaughterNeutrDaugh0->Pt();
    pTNeutrDaughNegative = mcPartDaughterNeutrDaugh1->Pt();
  }
  else {
    pTNeutrDaughPositive = mcPartDaughterNeutrDaugh1->Pt();
    pTNeutrDaughNegative = mcPartDaughterNeutrDaugh0->Pt();
  }
  
  isHadronic = kTRUE;
  
  vectorNeutrDaugh[0] = pTNeutrDaughPositive;
  vectorNeutrDaugh[1] = pTNeutrDaughNegative;
 
  return isHadronic;

}

//___________________________________________________________

void AliCFVertexingHFCascade::SetPtAccCut(Float_t* ptAccCut)
{
  //
  // setting the pt cut to be used in the Acceptance steps (MC+Reco)
  //

  AliDebug(3, "The 3rd element of the pt cut array will correspond to the cut applied to the soft pion - please check that it is correct");
  if (fProngs>0){
    for (Int_t iP=0; iP<fProngs; iP++){
      fPtAccCut[iP]=ptAccCut[iP];
    }
  }
  return;
}		



//___________________________________________________________

void AliCFVertexingHFCascade::SetEtaAccCut(Float_t* etaAccCut)
{
  //
  // setting the eta cut to be used in the Acceptance steps (MC+Reco)
  //

  AliDebug(3, "The 3rd element of the eta cut array will correspond to the cut applied to the soft pion - please check that it is correct");
  if (fProngs>0){
    for (Int_t iP=0; iP<fProngs; iP++){
      fEtaAccCut[iP] = etaAccCut[iP];
    }
  }
  return;
}
//___________________________________________________________

void AliCFVertexingHFCascade::SetAccCut(Float_t* ptAccCut, Float_t* etaAccCut)
{
  //
  // setting the pt and eta cut to be used in the Acceptance steps (MC+Reco)
  //

  AliDebug(3, "The 3rd element of the pt and cut array will correspond to the cut applied to the soft pion - please check that they are correct");
  if (fProngs>0){
    for (Int_t iP=0; iP<fProngs; iP++){
      fPtAccCut[iP]=ptAccCut[iP];
      fEtaAccCut[iP]=etaAccCut[iP];
    }
  }
  return;
}

//___________________________________________________________

void AliCFVertexingHFCascade::SetAccCut()
{
  //
  // setting the pt and eta cut to be used in the Acceptance steps (MC+Reco)
  //

  Int_t bachelorPosition = 2;
  if (fPDGcascade == 4122) bachelorPosition = 0;
  AliAODMCParticle* mcPartDaughter = dynamic_cast<AliAODMCParticle*>(fmcArray->At(fLabelArray[bachelorPosition]));  // should be the soft pion...  
  if(!mcPartDaughter) return;
  Int_t mother =  mcPartDaughter->GetMother();
  AliAODMCParticle* mcMother = dynamic_cast<AliAODMCParticle*>(fmcArray->At(mother)); 
  if(!mcMother) return;
  
  if (TMath::Abs(mcPartDaughter->GetPdgCode()) != fPDGbachelor || TMath::Abs(mcMother->GetPdgCode()) != fPDGcascade){
    AliError(Form("Apparently the expected bachelor is not in the third position, causing an error (pdg expected = %d, actual = %d)!!", fPDGbachelor, mcPartDaughter->GetPdgCode()));
    AliError("This should be fixed when checking the MC part family in the CF task...");
    return;  
  }	         
  if (fProngs>0){
    for (Int_t iP=0; iP<fProngs; iP++){
      fPtAccCut[iP]=0.1;
      fEtaAccCut[iP]=0.9;
    }
    
    if (fPDGcascade != 4122){
      fPtAccCut[2]=0.06;  // soft pion
      fEtaAccCut[2]=0.9;  // soft pion
    }
  }
  return;
}

//_____________________________________________________________
Double_t AliCFVertexingHFCascade::GetEtaProng(Int_t iProng) const 
{
  //
  // getting eta of the prong - overload the mother class method
  //

  if (fRecoCandidate){
   
    AliAODRecoCascadeHF* cascade = (AliAODRecoCascadeHF*)fRecoCandidate;

    Double_t etaProng =-9999;
    AliAODRecoDecay* neutrDaugh=0; 
    Int_t ibachelor = 1;
    if (fPDGcascade == 413) {
      neutrDaugh = cascade->Get2Prong();
    }
    else if (fPDGcascade == 4122) {
      neutrDaugh = cascade->Getv0();
      ibachelor = 0;
    }
    if (iProng==0) etaProng = neutrDaugh->EtaProng(0);
    if (iProng==1) etaProng = neutrDaugh->EtaProng(1);
    if (iProng==2) etaProng = cascade->EtaProng(ibachelor);
    
    return etaProng;
    
  }
  return 999999;    
}
//_____________________________________________________________
Double_t AliCFVertexingHFCascade::GetPtProng(Int_t iProng) const 
{
  //
  // getting pt of the prong
  //
  
  if (fRecoCandidate){

    AliAODRecoCascadeHF* cascade = (AliAODRecoCascadeHF*)fRecoCandidate;
    Double_t ptProng= -9999;
    AliAODRecoDecay* neutrDaugh=0; 
    if (fPDGcascade == 413) neutrDaugh = cascade->Get2Prong();
    else if (fPDGcascade == 4122) neutrDaugh = cascade->Getv0();
    if (iProng == 0) ptProng = neutrDaugh->PtProng(0);
    if (iProng == 1) ptProng = neutrDaugh->PtProng(1);
    if (iProng == 2) ptProng = cascade->PtProng(1);
    
    //	Double_t ptProng = fRecoCandidate->PtProng(iProng);  
    return ptProng;
    
  }
  return 999999;  

}
//_____________________________________________________________
Bool_t AliCFVertexingHFCascade::CheckAdditionalCuts(AliPIDResponse* pidResponse) const {

  // function to check whether the candidate passes the additional cuts defined in the task to get the
  // invariant mass spectra; these cuts are NOT pt-dependent

  if (fPDGcascade == 4122){
    // the method is implemented only in this case so far
    AliAODRecoCascadeHF* cascade = (AliAODRecoCascadeHF*)fRecoCandidate;
    AliAODv0 * v0part = cascade->Getv0();
    AliAODTrack *bachelor = (AliAODTrack*)cascade->GetBachelor();
    Double_t bachelorEta = bachelor->Eta();
    AliAODTrack *v0pos = (AliAODTrack*)v0part->GetDaughter(0);
    AliAODTrack *v0neg = (AliAODTrack*)v0part->GetDaughter(1);
    Double_t v0posEta = v0pos->Eta();
    Double_t v0negEta = v0neg->Eta();

    Bool_t onFlyV0 = v0part->GetOnFlyStatus(); // on-the-flight V0s
    Double_t nSigmaTPCpr=-999.;
    Double_t nSigmaTOFpr=-999.;
    nSigmaTPCpr = pidResponse->NumberOfSigmasTPC(bachelor,(AliPID::kProton));
    nSigmaTOFpr = pidResponse->NumberOfSigmasTOF(bachelor,(AliPID::kProton));
    Double_t ptArm = v0part->PtArmV0();
    Double_t invmassK0s = v0part->MassK0Short();
    Double_t mK0SPDG = TDatabasePDG::Instance()->GetParticle(310)->Mass();

    Bool_t cutsForTMVA = (TMath::Abs(bachelorEta) < 0.8 && TMath::Abs(v0posEta) < 0.8 && TMath::Abs(v0negEta) < 0.8) &&
      ((nSigmaTOFpr < -800) || (TMath::Abs(nSigmaTOFpr) < 3)) &&  
      ((ptArm < 0.07) || (ptArm > 0.105)) &&
      ((TMath::Abs(invmassK0s - mK0SPDG)) < 0.01);


    if (!fUseCutsForTMVA) cutsForTMVA = kTRUE;

    Bool_t cutsForInvMassTask = !(onFlyV0) && 
      (cascade->CosV0PointingAngle()>0.99) && 
      (TMath::Abs(nSigmaTPCpr) <= 3) && 
      (v0part->Getd0Prong(0) < 20) && 
      (v0part->Getd0Prong(1) < 20);

    if (cutsForTMVA && cutsForInvMassTask) {	
      // K0Smass cut
      // eta cut
      // TOF PID cut
      // Arm cut
      return kTRUE;
    }
  }

  return kFALSE;

}
 AliCFVertexingHFCascade.cxx:1
 AliCFVertexingHFCascade.cxx:2
 AliCFVertexingHFCascade.cxx:3
 AliCFVertexingHFCascade.cxx:4
 AliCFVertexingHFCascade.cxx:5
 AliCFVertexingHFCascade.cxx:6
 AliCFVertexingHFCascade.cxx:7
 AliCFVertexingHFCascade.cxx:8
 AliCFVertexingHFCascade.cxx:9
 AliCFVertexingHFCascade.cxx:10
 AliCFVertexingHFCascade.cxx:11
 AliCFVertexingHFCascade.cxx:12
 AliCFVertexingHFCascade.cxx:13
 AliCFVertexingHFCascade.cxx:14
 AliCFVertexingHFCascade.cxx:15
 AliCFVertexingHFCascade.cxx:16
 AliCFVertexingHFCascade.cxx:17
 AliCFVertexingHFCascade.cxx:18
 AliCFVertexingHFCascade.cxx:19
 AliCFVertexingHFCascade.cxx:20
 AliCFVertexingHFCascade.cxx:21
 AliCFVertexingHFCascade.cxx:22
 AliCFVertexingHFCascade.cxx:23
 AliCFVertexingHFCascade.cxx:24
 AliCFVertexingHFCascade.cxx:25
 AliCFVertexingHFCascade.cxx:26
 AliCFVertexingHFCascade.cxx:27
 AliCFVertexingHFCascade.cxx:28
 AliCFVertexingHFCascade.cxx:29
 AliCFVertexingHFCascade.cxx:30
 AliCFVertexingHFCascade.cxx:31
 AliCFVertexingHFCascade.cxx:32
 AliCFVertexingHFCascade.cxx:33
 AliCFVertexingHFCascade.cxx:34
 AliCFVertexingHFCascade.cxx:35
 AliCFVertexingHFCascade.cxx:36
 AliCFVertexingHFCascade.cxx:37
 AliCFVertexingHFCascade.cxx:38
 AliCFVertexingHFCascade.cxx:39
 AliCFVertexingHFCascade.cxx:40
 AliCFVertexingHFCascade.cxx:41
 AliCFVertexingHFCascade.cxx:42
 AliCFVertexingHFCascade.cxx:43
 AliCFVertexingHFCascade.cxx:44
 AliCFVertexingHFCascade.cxx:45
 AliCFVertexingHFCascade.cxx:46
 AliCFVertexingHFCascade.cxx:47
 AliCFVertexingHFCascade.cxx:48
 AliCFVertexingHFCascade.cxx:49
 AliCFVertexingHFCascade.cxx:50
 AliCFVertexingHFCascade.cxx:51
 AliCFVertexingHFCascade.cxx:52
 AliCFVertexingHFCascade.cxx:53
 AliCFVertexingHFCascade.cxx:54
 AliCFVertexingHFCascade.cxx:55
 AliCFVertexingHFCascade.cxx:56
 AliCFVertexingHFCascade.cxx:57
 AliCFVertexingHFCascade.cxx:58
 AliCFVertexingHFCascade.cxx:59
 AliCFVertexingHFCascade.cxx:60
 AliCFVertexingHFCascade.cxx:61
 AliCFVertexingHFCascade.cxx:62
 AliCFVertexingHFCascade.cxx:63
 AliCFVertexingHFCascade.cxx:64
 AliCFVertexingHFCascade.cxx:65
 AliCFVertexingHFCascade.cxx:66
 AliCFVertexingHFCascade.cxx:67
 AliCFVertexingHFCascade.cxx:68
 AliCFVertexingHFCascade.cxx:69
 AliCFVertexingHFCascade.cxx:70
 AliCFVertexingHFCascade.cxx:71
 AliCFVertexingHFCascade.cxx:72
 AliCFVertexingHFCascade.cxx:73
 AliCFVertexingHFCascade.cxx:74
 AliCFVertexingHFCascade.cxx:75
 AliCFVertexingHFCascade.cxx:76
 AliCFVertexingHFCascade.cxx:77
 AliCFVertexingHFCascade.cxx:78
 AliCFVertexingHFCascade.cxx:79
 AliCFVertexingHFCascade.cxx:80
 AliCFVertexingHFCascade.cxx:81
 AliCFVertexingHFCascade.cxx:82
 AliCFVertexingHFCascade.cxx:83
 AliCFVertexingHFCascade.cxx:84
 AliCFVertexingHFCascade.cxx:85
 AliCFVertexingHFCascade.cxx:86
 AliCFVertexingHFCascade.cxx:87
 AliCFVertexingHFCascade.cxx:88
 AliCFVertexingHFCascade.cxx:89
 AliCFVertexingHFCascade.cxx:90
 AliCFVertexingHFCascade.cxx:91
 AliCFVertexingHFCascade.cxx:92
 AliCFVertexingHFCascade.cxx:93
 AliCFVertexingHFCascade.cxx:94
 AliCFVertexingHFCascade.cxx:95
 AliCFVertexingHFCascade.cxx:96
 AliCFVertexingHFCascade.cxx:97
 AliCFVertexingHFCascade.cxx:98
 AliCFVertexingHFCascade.cxx:99
 AliCFVertexingHFCascade.cxx:100
 AliCFVertexingHFCascade.cxx:101
 AliCFVertexingHFCascade.cxx:102
 AliCFVertexingHFCascade.cxx:103
 AliCFVertexingHFCascade.cxx:104
 AliCFVertexingHFCascade.cxx:105
 AliCFVertexingHFCascade.cxx:106
 AliCFVertexingHFCascade.cxx:107
 AliCFVertexingHFCascade.cxx:108
 AliCFVertexingHFCascade.cxx:109
 AliCFVertexingHFCascade.cxx:110
 AliCFVertexingHFCascade.cxx:111
 AliCFVertexingHFCascade.cxx:112
 AliCFVertexingHFCascade.cxx:113
 AliCFVertexingHFCascade.cxx:114
 AliCFVertexingHFCascade.cxx:115
 AliCFVertexingHFCascade.cxx:116
 AliCFVertexingHFCascade.cxx:117
 AliCFVertexingHFCascade.cxx:118
 AliCFVertexingHFCascade.cxx:119
 AliCFVertexingHFCascade.cxx:120
 AliCFVertexingHFCascade.cxx:121
 AliCFVertexingHFCascade.cxx:122
 AliCFVertexingHFCascade.cxx:123
 AliCFVertexingHFCascade.cxx:124
 AliCFVertexingHFCascade.cxx:125
 AliCFVertexingHFCascade.cxx:126
 AliCFVertexingHFCascade.cxx:127
 AliCFVertexingHFCascade.cxx:128
 AliCFVertexingHFCascade.cxx:129
 AliCFVertexingHFCascade.cxx:130
 AliCFVertexingHFCascade.cxx:131
 AliCFVertexingHFCascade.cxx:132
 AliCFVertexingHFCascade.cxx:133
 AliCFVertexingHFCascade.cxx:134
 AliCFVertexingHFCascade.cxx:135
 AliCFVertexingHFCascade.cxx:136
 AliCFVertexingHFCascade.cxx:137
 AliCFVertexingHFCascade.cxx:138
 AliCFVertexingHFCascade.cxx:139
 AliCFVertexingHFCascade.cxx:140
 AliCFVertexingHFCascade.cxx:141
 AliCFVertexingHFCascade.cxx:142
 AliCFVertexingHFCascade.cxx:143
 AliCFVertexingHFCascade.cxx:144
 AliCFVertexingHFCascade.cxx:145
 AliCFVertexingHFCascade.cxx:146
 AliCFVertexingHFCascade.cxx:147
 AliCFVertexingHFCascade.cxx:148
 AliCFVertexingHFCascade.cxx:149
 AliCFVertexingHFCascade.cxx:150
 AliCFVertexingHFCascade.cxx:151
 AliCFVertexingHFCascade.cxx:152
 AliCFVertexingHFCascade.cxx:153
 AliCFVertexingHFCascade.cxx:154
 AliCFVertexingHFCascade.cxx:155
 AliCFVertexingHFCascade.cxx:156
 AliCFVertexingHFCascade.cxx:157
 AliCFVertexingHFCascade.cxx:158
 AliCFVertexingHFCascade.cxx:159
 AliCFVertexingHFCascade.cxx:160
 AliCFVertexingHFCascade.cxx:161
 AliCFVertexingHFCascade.cxx:162
 AliCFVertexingHFCascade.cxx:163
 AliCFVertexingHFCascade.cxx:164
 AliCFVertexingHFCascade.cxx:165
 AliCFVertexingHFCascade.cxx:166
 AliCFVertexingHFCascade.cxx:167
 AliCFVertexingHFCascade.cxx:168
 AliCFVertexingHFCascade.cxx:169
 AliCFVertexingHFCascade.cxx:170
 AliCFVertexingHFCascade.cxx:171
 AliCFVertexingHFCascade.cxx:172
 AliCFVertexingHFCascade.cxx:173
 AliCFVertexingHFCascade.cxx:174
 AliCFVertexingHFCascade.cxx:175
 AliCFVertexingHFCascade.cxx:176
 AliCFVertexingHFCascade.cxx:177
 AliCFVertexingHFCascade.cxx:178
 AliCFVertexingHFCascade.cxx:179
 AliCFVertexingHFCascade.cxx:180
 AliCFVertexingHFCascade.cxx:181
 AliCFVertexingHFCascade.cxx:182
 AliCFVertexingHFCascade.cxx:183
 AliCFVertexingHFCascade.cxx:184
 AliCFVertexingHFCascade.cxx:185
 AliCFVertexingHFCascade.cxx:186
 AliCFVertexingHFCascade.cxx:187
 AliCFVertexingHFCascade.cxx:188
 AliCFVertexingHFCascade.cxx:189
 AliCFVertexingHFCascade.cxx:190
 AliCFVertexingHFCascade.cxx:191
 AliCFVertexingHFCascade.cxx:192
 AliCFVertexingHFCascade.cxx:193
 AliCFVertexingHFCascade.cxx:194
 AliCFVertexingHFCascade.cxx:195
 AliCFVertexingHFCascade.cxx:196
 AliCFVertexingHFCascade.cxx:197
 AliCFVertexingHFCascade.cxx:198
 AliCFVertexingHFCascade.cxx:199
 AliCFVertexingHFCascade.cxx:200
 AliCFVertexingHFCascade.cxx:201
 AliCFVertexingHFCascade.cxx:202
 AliCFVertexingHFCascade.cxx:203
 AliCFVertexingHFCascade.cxx:204
 AliCFVertexingHFCascade.cxx:205
 AliCFVertexingHFCascade.cxx:206
 AliCFVertexingHFCascade.cxx:207
 AliCFVertexingHFCascade.cxx:208
 AliCFVertexingHFCascade.cxx:209
 AliCFVertexingHFCascade.cxx:210
 AliCFVertexingHFCascade.cxx:211
 AliCFVertexingHFCascade.cxx:212
 AliCFVertexingHFCascade.cxx:213
 AliCFVertexingHFCascade.cxx:214
 AliCFVertexingHFCascade.cxx:215
 AliCFVertexingHFCascade.cxx:216
 AliCFVertexingHFCascade.cxx:217
 AliCFVertexingHFCascade.cxx:218
 AliCFVertexingHFCascade.cxx:219
 AliCFVertexingHFCascade.cxx:220
 AliCFVertexingHFCascade.cxx:221
 AliCFVertexingHFCascade.cxx:222
 AliCFVertexingHFCascade.cxx:223
 AliCFVertexingHFCascade.cxx:224
 AliCFVertexingHFCascade.cxx:225
 AliCFVertexingHFCascade.cxx:226
 AliCFVertexingHFCascade.cxx:227
 AliCFVertexingHFCascade.cxx:228
 AliCFVertexingHFCascade.cxx:229
 AliCFVertexingHFCascade.cxx:230
 AliCFVertexingHFCascade.cxx:231
 AliCFVertexingHFCascade.cxx:232
 AliCFVertexingHFCascade.cxx:233
 AliCFVertexingHFCascade.cxx:234
 AliCFVertexingHFCascade.cxx:235
 AliCFVertexingHFCascade.cxx:236
 AliCFVertexingHFCascade.cxx:237
 AliCFVertexingHFCascade.cxx:238
 AliCFVertexingHFCascade.cxx:239
 AliCFVertexingHFCascade.cxx:240
 AliCFVertexingHFCascade.cxx:241
 AliCFVertexingHFCascade.cxx:242
 AliCFVertexingHFCascade.cxx:243
 AliCFVertexingHFCascade.cxx:244
 AliCFVertexingHFCascade.cxx:245
 AliCFVertexingHFCascade.cxx:246
 AliCFVertexingHFCascade.cxx:247
 AliCFVertexingHFCascade.cxx:248
 AliCFVertexingHFCascade.cxx:249
 AliCFVertexingHFCascade.cxx:250
 AliCFVertexingHFCascade.cxx:251
 AliCFVertexingHFCascade.cxx:252
 AliCFVertexingHFCascade.cxx:253
 AliCFVertexingHFCascade.cxx:254
 AliCFVertexingHFCascade.cxx:255
 AliCFVertexingHFCascade.cxx:256
 AliCFVertexingHFCascade.cxx:257
 AliCFVertexingHFCascade.cxx:258
 AliCFVertexingHFCascade.cxx:259
 AliCFVertexingHFCascade.cxx:260
 AliCFVertexingHFCascade.cxx:261
 AliCFVertexingHFCascade.cxx:262
 AliCFVertexingHFCascade.cxx:263
 AliCFVertexingHFCascade.cxx:264
 AliCFVertexingHFCascade.cxx:265
 AliCFVertexingHFCascade.cxx:266
 AliCFVertexingHFCascade.cxx:267
 AliCFVertexingHFCascade.cxx:268
 AliCFVertexingHFCascade.cxx:269
 AliCFVertexingHFCascade.cxx:270
 AliCFVertexingHFCascade.cxx:271
 AliCFVertexingHFCascade.cxx:272
 AliCFVertexingHFCascade.cxx:273
 AliCFVertexingHFCascade.cxx:274
 AliCFVertexingHFCascade.cxx:275
 AliCFVertexingHFCascade.cxx:276
 AliCFVertexingHFCascade.cxx:277
 AliCFVertexingHFCascade.cxx:278
 AliCFVertexingHFCascade.cxx:279
 AliCFVertexingHFCascade.cxx:280
 AliCFVertexingHFCascade.cxx:281
 AliCFVertexingHFCascade.cxx:282
 AliCFVertexingHFCascade.cxx:283
 AliCFVertexingHFCascade.cxx:284
 AliCFVertexingHFCascade.cxx:285
 AliCFVertexingHFCascade.cxx:286
 AliCFVertexingHFCascade.cxx:287
 AliCFVertexingHFCascade.cxx:288
 AliCFVertexingHFCascade.cxx:289
 AliCFVertexingHFCascade.cxx:290
 AliCFVertexingHFCascade.cxx:291
 AliCFVertexingHFCascade.cxx:292
 AliCFVertexingHFCascade.cxx:293
 AliCFVertexingHFCascade.cxx:294
 AliCFVertexingHFCascade.cxx:295
 AliCFVertexingHFCascade.cxx:296
 AliCFVertexingHFCascade.cxx:297
 AliCFVertexingHFCascade.cxx:298
 AliCFVertexingHFCascade.cxx:299
 AliCFVertexingHFCascade.cxx:300
 AliCFVertexingHFCascade.cxx:301
 AliCFVertexingHFCascade.cxx:302
 AliCFVertexingHFCascade.cxx:303
 AliCFVertexingHFCascade.cxx:304
 AliCFVertexingHFCascade.cxx:305
 AliCFVertexingHFCascade.cxx:306
 AliCFVertexingHFCascade.cxx:307
 AliCFVertexingHFCascade.cxx:308
 AliCFVertexingHFCascade.cxx:309
 AliCFVertexingHFCascade.cxx:310
 AliCFVertexingHFCascade.cxx:311
 AliCFVertexingHFCascade.cxx:312
 AliCFVertexingHFCascade.cxx:313
 AliCFVertexingHFCascade.cxx:314
 AliCFVertexingHFCascade.cxx:315
 AliCFVertexingHFCascade.cxx:316
 AliCFVertexingHFCascade.cxx:317
 AliCFVertexingHFCascade.cxx:318
 AliCFVertexingHFCascade.cxx:319
 AliCFVertexingHFCascade.cxx:320
 AliCFVertexingHFCascade.cxx:321
 AliCFVertexingHFCascade.cxx:322
 AliCFVertexingHFCascade.cxx:323
 AliCFVertexingHFCascade.cxx:324
 AliCFVertexingHFCascade.cxx:325
 AliCFVertexingHFCascade.cxx:326
 AliCFVertexingHFCascade.cxx:327
 AliCFVertexingHFCascade.cxx:328
 AliCFVertexingHFCascade.cxx:329
 AliCFVertexingHFCascade.cxx:330
 AliCFVertexingHFCascade.cxx:331
 AliCFVertexingHFCascade.cxx:332
 AliCFVertexingHFCascade.cxx:333
 AliCFVertexingHFCascade.cxx:334
 AliCFVertexingHFCascade.cxx:335
 AliCFVertexingHFCascade.cxx:336
 AliCFVertexingHFCascade.cxx:337
 AliCFVertexingHFCascade.cxx:338
 AliCFVertexingHFCascade.cxx:339
 AliCFVertexingHFCascade.cxx:340
 AliCFVertexingHFCascade.cxx:341
 AliCFVertexingHFCascade.cxx:342
 AliCFVertexingHFCascade.cxx:343
 AliCFVertexingHFCascade.cxx:344
 AliCFVertexingHFCascade.cxx:345
 AliCFVertexingHFCascade.cxx:346
 AliCFVertexingHFCascade.cxx:347
 AliCFVertexingHFCascade.cxx:348
 AliCFVertexingHFCascade.cxx:349
 AliCFVertexingHFCascade.cxx:350
 AliCFVertexingHFCascade.cxx:351
 AliCFVertexingHFCascade.cxx:352
 AliCFVertexingHFCascade.cxx:353
 AliCFVertexingHFCascade.cxx:354
 AliCFVertexingHFCascade.cxx:355
 AliCFVertexingHFCascade.cxx:356
 AliCFVertexingHFCascade.cxx:357
 AliCFVertexingHFCascade.cxx:358
 AliCFVertexingHFCascade.cxx:359
 AliCFVertexingHFCascade.cxx:360
 AliCFVertexingHFCascade.cxx:361
 AliCFVertexingHFCascade.cxx:362
 AliCFVertexingHFCascade.cxx:363
 AliCFVertexingHFCascade.cxx:364
 AliCFVertexingHFCascade.cxx:365
 AliCFVertexingHFCascade.cxx:366
 AliCFVertexingHFCascade.cxx:367
 AliCFVertexingHFCascade.cxx:368
 AliCFVertexingHFCascade.cxx:369
 AliCFVertexingHFCascade.cxx:370
 AliCFVertexingHFCascade.cxx:371
 AliCFVertexingHFCascade.cxx:372
 AliCFVertexingHFCascade.cxx:373
 AliCFVertexingHFCascade.cxx:374
 AliCFVertexingHFCascade.cxx:375
 AliCFVertexingHFCascade.cxx:376
 AliCFVertexingHFCascade.cxx:377
 AliCFVertexingHFCascade.cxx:378
 AliCFVertexingHFCascade.cxx:379
 AliCFVertexingHFCascade.cxx:380
 AliCFVertexingHFCascade.cxx:381
 AliCFVertexingHFCascade.cxx:382
 AliCFVertexingHFCascade.cxx:383
 AliCFVertexingHFCascade.cxx:384
 AliCFVertexingHFCascade.cxx:385
 AliCFVertexingHFCascade.cxx:386
 AliCFVertexingHFCascade.cxx:387
 AliCFVertexingHFCascade.cxx:388
 AliCFVertexingHFCascade.cxx:389
 AliCFVertexingHFCascade.cxx:390
 AliCFVertexingHFCascade.cxx:391
 AliCFVertexingHFCascade.cxx:392
 AliCFVertexingHFCascade.cxx:393
 AliCFVertexingHFCascade.cxx:394
 AliCFVertexingHFCascade.cxx:395
 AliCFVertexingHFCascade.cxx:396
 AliCFVertexingHFCascade.cxx:397
 AliCFVertexingHFCascade.cxx:398
 AliCFVertexingHFCascade.cxx:399
 AliCFVertexingHFCascade.cxx:400
 AliCFVertexingHFCascade.cxx:401
 AliCFVertexingHFCascade.cxx:402
 AliCFVertexingHFCascade.cxx:403
 AliCFVertexingHFCascade.cxx:404
 AliCFVertexingHFCascade.cxx:405
 AliCFVertexingHFCascade.cxx:406
 AliCFVertexingHFCascade.cxx:407
 AliCFVertexingHFCascade.cxx:408
 AliCFVertexingHFCascade.cxx:409
 AliCFVertexingHFCascade.cxx:410
 AliCFVertexingHFCascade.cxx:411
 AliCFVertexingHFCascade.cxx:412
 AliCFVertexingHFCascade.cxx:413
 AliCFVertexingHFCascade.cxx:414
 AliCFVertexingHFCascade.cxx:415
 AliCFVertexingHFCascade.cxx:416
 AliCFVertexingHFCascade.cxx:417
 AliCFVertexingHFCascade.cxx:418
 AliCFVertexingHFCascade.cxx:419
 AliCFVertexingHFCascade.cxx:420
 AliCFVertexingHFCascade.cxx:421
 AliCFVertexingHFCascade.cxx:422
 AliCFVertexingHFCascade.cxx:423
 AliCFVertexingHFCascade.cxx:424
 AliCFVertexingHFCascade.cxx:425
 AliCFVertexingHFCascade.cxx:426
 AliCFVertexingHFCascade.cxx:427
 AliCFVertexingHFCascade.cxx:428
 AliCFVertexingHFCascade.cxx:429
 AliCFVertexingHFCascade.cxx:430
 AliCFVertexingHFCascade.cxx:431
 AliCFVertexingHFCascade.cxx:432
 AliCFVertexingHFCascade.cxx:433
 AliCFVertexingHFCascade.cxx:434
 AliCFVertexingHFCascade.cxx:435
 AliCFVertexingHFCascade.cxx:436
 AliCFVertexingHFCascade.cxx:437
 AliCFVertexingHFCascade.cxx:438
 AliCFVertexingHFCascade.cxx:439
 AliCFVertexingHFCascade.cxx:440
 AliCFVertexingHFCascade.cxx:441
 AliCFVertexingHFCascade.cxx:442
 AliCFVertexingHFCascade.cxx:443
 AliCFVertexingHFCascade.cxx:444
 AliCFVertexingHFCascade.cxx:445
 AliCFVertexingHFCascade.cxx:446
 AliCFVertexingHFCascade.cxx:447
 AliCFVertexingHFCascade.cxx:448
 AliCFVertexingHFCascade.cxx:449
 AliCFVertexingHFCascade.cxx:450
 AliCFVertexingHFCascade.cxx:451
 AliCFVertexingHFCascade.cxx:452
 AliCFVertexingHFCascade.cxx:453
 AliCFVertexingHFCascade.cxx:454
 AliCFVertexingHFCascade.cxx:455
 AliCFVertexingHFCascade.cxx:456
 AliCFVertexingHFCascade.cxx:457
 AliCFVertexingHFCascade.cxx:458
 AliCFVertexingHFCascade.cxx:459
 AliCFVertexingHFCascade.cxx:460
 AliCFVertexingHFCascade.cxx:461
 AliCFVertexingHFCascade.cxx:462
 AliCFVertexingHFCascade.cxx:463
 AliCFVertexingHFCascade.cxx:464
 AliCFVertexingHFCascade.cxx:465
 AliCFVertexingHFCascade.cxx:466
 AliCFVertexingHFCascade.cxx:467
 AliCFVertexingHFCascade.cxx:468
 AliCFVertexingHFCascade.cxx:469
 AliCFVertexingHFCascade.cxx:470
 AliCFVertexingHFCascade.cxx:471
 AliCFVertexingHFCascade.cxx:472
 AliCFVertexingHFCascade.cxx:473
 AliCFVertexingHFCascade.cxx:474
 AliCFVertexingHFCascade.cxx:475
 AliCFVertexingHFCascade.cxx:476
 AliCFVertexingHFCascade.cxx:477
 AliCFVertexingHFCascade.cxx:478
 AliCFVertexingHFCascade.cxx:479
 AliCFVertexingHFCascade.cxx:480
 AliCFVertexingHFCascade.cxx:481
 AliCFVertexingHFCascade.cxx:482
 AliCFVertexingHFCascade.cxx:483
 AliCFVertexingHFCascade.cxx:484
 AliCFVertexingHFCascade.cxx:485
 AliCFVertexingHFCascade.cxx:486
 AliCFVertexingHFCascade.cxx:487
 AliCFVertexingHFCascade.cxx:488
 AliCFVertexingHFCascade.cxx:489
 AliCFVertexingHFCascade.cxx:490
 AliCFVertexingHFCascade.cxx:491
 AliCFVertexingHFCascade.cxx:492
 AliCFVertexingHFCascade.cxx:493
 AliCFVertexingHFCascade.cxx:494
 AliCFVertexingHFCascade.cxx:495
 AliCFVertexingHFCascade.cxx:496
 AliCFVertexingHFCascade.cxx:497
 AliCFVertexingHFCascade.cxx:498
 AliCFVertexingHFCascade.cxx:499
 AliCFVertexingHFCascade.cxx:500
 AliCFVertexingHFCascade.cxx:501
 AliCFVertexingHFCascade.cxx:502
 AliCFVertexingHFCascade.cxx:503
 AliCFVertexingHFCascade.cxx:504
 AliCFVertexingHFCascade.cxx:505
 AliCFVertexingHFCascade.cxx:506
 AliCFVertexingHFCascade.cxx:507
 AliCFVertexingHFCascade.cxx:508
 AliCFVertexingHFCascade.cxx:509
 AliCFVertexingHFCascade.cxx:510
 AliCFVertexingHFCascade.cxx:511
 AliCFVertexingHFCascade.cxx:512
 AliCFVertexingHFCascade.cxx:513
 AliCFVertexingHFCascade.cxx:514
 AliCFVertexingHFCascade.cxx:515
 AliCFVertexingHFCascade.cxx:516
 AliCFVertexingHFCascade.cxx:517
 AliCFVertexingHFCascade.cxx:518
 AliCFVertexingHFCascade.cxx:519
 AliCFVertexingHFCascade.cxx:520
 AliCFVertexingHFCascade.cxx:521
 AliCFVertexingHFCascade.cxx:522
 AliCFVertexingHFCascade.cxx:523
 AliCFVertexingHFCascade.cxx:524
 AliCFVertexingHFCascade.cxx:525
 AliCFVertexingHFCascade.cxx:526
 AliCFVertexingHFCascade.cxx:527
 AliCFVertexingHFCascade.cxx:528
 AliCFVertexingHFCascade.cxx:529
 AliCFVertexingHFCascade.cxx:530
 AliCFVertexingHFCascade.cxx:531
 AliCFVertexingHFCascade.cxx:532
 AliCFVertexingHFCascade.cxx:533
 AliCFVertexingHFCascade.cxx:534
 AliCFVertexingHFCascade.cxx:535
 AliCFVertexingHFCascade.cxx:536
 AliCFVertexingHFCascade.cxx:537
 AliCFVertexingHFCascade.cxx:538
 AliCFVertexingHFCascade.cxx:539
 AliCFVertexingHFCascade.cxx:540
 AliCFVertexingHFCascade.cxx:541
 AliCFVertexingHFCascade.cxx:542
 AliCFVertexingHFCascade.cxx:543
 AliCFVertexingHFCascade.cxx:544
 AliCFVertexingHFCascade.cxx:545
 AliCFVertexingHFCascade.cxx:546
 AliCFVertexingHFCascade.cxx:547
 AliCFVertexingHFCascade.cxx:548
 AliCFVertexingHFCascade.cxx:549
 AliCFVertexingHFCascade.cxx:550
 AliCFVertexingHFCascade.cxx:551
 AliCFVertexingHFCascade.cxx:552
 AliCFVertexingHFCascade.cxx:553
 AliCFVertexingHFCascade.cxx:554
 AliCFVertexingHFCascade.cxx:555
 AliCFVertexingHFCascade.cxx:556
 AliCFVertexingHFCascade.cxx:557
 AliCFVertexingHFCascade.cxx:558
 AliCFVertexingHFCascade.cxx:559
 AliCFVertexingHFCascade.cxx:560
 AliCFVertexingHFCascade.cxx:561
 AliCFVertexingHFCascade.cxx:562
 AliCFVertexingHFCascade.cxx:563
 AliCFVertexingHFCascade.cxx:564
 AliCFVertexingHFCascade.cxx:565
 AliCFVertexingHFCascade.cxx:566
 AliCFVertexingHFCascade.cxx:567
 AliCFVertexingHFCascade.cxx:568
 AliCFVertexingHFCascade.cxx:569
 AliCFVertexingHFCascade.cxx:570
 AliCFVertexingHFCascade.cxx:571
 AliCFVertexingHFCascade.cxx:572
 AliCFVertexingHFCascade.cxx:573
 AliCFVertexingHFCascade.cxx:574
 AliCFVertexingHFCascade.cxx:575
 AliCFVertexingHFCascade.cxx:576
 AliCFVertexingHFCascade.cxx:577
 AliCFVertexingHFCascade.cxx:578
 AliCFVertexingHFCascade.cxx:579
 AliCFVertexingHFCascade.cxx:580
 AliCFVertexingHFCascade.cxx:581
 AliCFVertexingHFCascade.cxx:582
 AliCFVertexingHFCascade.cxx:583
 AliCFVertexingHFCascade.cxx:584
 AliCFVertexingHFCascade.cxx:585
 AliCFVertexingHFCascade.cxx:586
 AliCFVertexingHFCascade.cxx:587
 AliCFVertexingHFCascade.cxx:588
 AliCFVertexingHFCascade.cxx:589
 AliCFVertexingHFCascade.cxx:590
 AliCFVertexingHFCascade.cxx:591
 AliCFVertexingHFCascade.cxx:592
 AliCFVertexingHFCascade.cxx:593
 AliCFVertexingHFCascade.cxx:594
 AliCFVertexingHFCascade.cxx:595
 AliCFVertexingHFCascade.cxx:596
 AliCFVertexingHFCascade.cxx:597
 AliCFVertexingHFCascade.cxx:598
 AliCFVertexingHFCascade.cxx:599
 AliCFVertexingHFCascade.cxx:600
 AliCFVertexingHFCascade.cxx:601
 AliCFVertexingHFCascade.cxx:602
 AliCFVertexingHFCascade.cxx:603
 AliCFVertexingHFCascade.cxx:604
 AliCFVertexingHFCascade.cxx:605
 AliCFVertexingHFCascade.cxx:606
 AliCFVertexingHFCascade.cxx:607
 AliCFVertexingHFCascade.cxx:608
 AliCFVertexingHFCascade.cxx:609
 AliCFVertexingHFCascade.cxx:610
 AliCFVertexingHFCascade.cxx:611
 AliCFVertexingHFCascade.cxx:612
 AliCFVertexingHFCascade.cxx:613
 AliCFVertexingHFCascade.cxx:614
 AliCFVertexingHFCascade.cxx:615
 AliCFVertexingHFCascade.cxx:616
 AliCFVertexingHFCascade.cxx:617
 AliCFVertexingHFCascade.cxx:618
 AliCFVertexingHFCascade.cxx:619
 AliCFVertexingHFCascade.cxx:620
 AliCFVertexingHFCascade.cxx:621
 AliCFVertexingHFCascade.cxx:622
 AliCFVertexingHFCascade.cxx:623
 AliCFVertexingHFCascade.cxx:624
 AliCFVertexingHFCascade.cxx:625
 AliCFVertexingHFCascade.cxx:626
 AliCFVertexingHFCascade.cxx:627
 AliCFVertexingHFCascade.cxx:628
 AliCFVertexingHFCascade.cxx:629
 AliCFVertexingHFCascade.cxx:630
 AliCFVertexingHFCascade.cxx:631
 AliCFVertexingHFCascade.cxx:632
 AliCFVertexingHFCascade.cxx:633
 AliCFVertexingHFCascade.cxx:634
 AliCFVertexingHFCascade.cxx:635
 AliCFVertexingHFCascade.cxx:636
 AliCFVertexingHFCascade.cxx:637
 AliCFVertexingHFCascade.cxx:638
 AliCFVertexingHFCascade.cxx:639
 AliCFVertexingHFCascade.cxx:640
 AliCFVertexingHFCascade.cxx:641
 AliCFVertexingHFCascade.cxx:642
 AliCFVertexingHFCascade.cxx:643
 AliCFVertexingHFCascade.cxx:644
 AliCFVertexingHFCascade.cxx:645
 AliCFVertexingHFCascade.cxx:646
 AliCFVertexingHFCascade.cxx:647
 AliCFVertexingHFCascade.cxx:648
 AliCFVertexingHFCascade.cxx:649
 AliCFVertexingHFCascade.cxx:650
 AliCFVertexingHFCascade.cxx:651
 AliCFVertexingHFCascade.cxx:652
 AliCFVertexingHFCascade.cxx:653
 AliCFVertexingHFCascade.cxx:654
 AliCFVertexingHFCascade.cxx:655
 AliCFVertexingHFCascade.cxx:656
 AliCFVertexingHFCascade.cxx:657
 AliCFVertexingHFCascade.cxx:658
 AliCFVertexingHFCascade.cxx:659
 AliCFVertexingHFCascade.cxx:660
 AliCFVertexingHFCascade.cxx:661
 AliCFVertexingHFCascade.cxx:662
 AliCFVertexingHFCascade.cxx:663
 AliCFVertexingHFCascade.cxx:664
 AliCFVertexingHFCascade.cxx:665
 AliCFVertexingHFCascade.cxx:666
 AliCFVertexingHFCascade.cxx:667
 AliCFVertexingHFCascade.cxx:668
 AliCFVertexingHFCascade.cxx:669
 AliCFVertexingHFCascade.cxx:670
 AliCFVertexingHFCascade.cxx:671
 AliCFVertexingHFCascade.cxx:672
 AliCFVertexingHFCascade.cxx:673
 AliCFVertexingHFCascade.cxx:674
 AliCFVertexingHFCascade.cxx:675
 AliCFVertexingHFCascade.cxx:676
 AliCFVertexingHFCascade.cxx:677
 AliCFVertexingHFCascade.cxx:678
 AliCFVertexingHFCascade.cxx:679
 AliCFVertexingHFCascade.cxx:680
 AliCFVertexingHFCascade.cxx:681
 AliCFVertexingHFCascade.cxx:682
 AliCFVertexingHFCascade.cxx:683
 AliCFVertexingHFCascade.cxx:684
 AliCFVertexingHFCascade.cxx:685
 AliCFVertexingHFCascade.cxx:686
 AliCFVertexingHFCascade.cxx:687
 AliCFVertexingHFCascade.cxx:688
 AliCFVertexingHFCascade.cxx:689
 AliCFVertexingHFCascade.cxx:690
 AliCFVertexingHFCascade.cxx:691
 AliCFVertexingHFCascade.cxx:692
 AliCFVertexingHFCascade.cxx:693
 AliCFVertexingHFCascade.cxx:694
 AliCFVertexingHFCascade.cxx:695
 AliCFVertexingHFCascade.cxx:696
 AliCFVertexingHFCascade.cxx:697
 AliCFVertexingHFCascade.cxx:698
 AliCFVertexingHFCascade.cxx:699
 AliCFVertexingHFCascade.cxx:700
 AliCFVertexingHFCascade.cxx:701
 AliCFVertexingHFCascade.cxx:702
 AliCFVertexingHFCascade.cxx:703
 AliCFVertexingHFCascade.cxx:704
 AliCFVertexingHFCascade.cxx:705
 AliCFVertexingHFCascade.cxx:706
 AliCFVertexingHFCascade.cxx:707
 AliCFVertexingHFCascade.cxx:708
 AliCFVertexingHFCascade.cxx:709
 AliCFVertexingHFCascade.cxx:710
 AliCFVertexingHFCascade.cxx:711
 AliCFVertexingHFCascade.cxx:712
 AliCFVertexingHFCascade.cxx:713
 AliCFVertexingHFCascade.cxx:714
 AliCFVertexingHFCascade.cxx:715
 AliCFVertexingHFCascade.cxx:716
 AliCFVertexingHFCascade.cxx:717
 AliCFVertexingHFCascade.cxx:718
 AliCFVertexingHFCascade.cxx:719
 AliCFVertexingHFCascade.cxx:720
 AliCFVertexingHFCascade.cxx:721
 AliCFVertexingHFCascade.cxx:722
 AliCFVertexingHFCascade.cxx:723
 AliCFVertexingHFCascade.cxx:724
 AliCFVertexingHFCascade.cxx:725
 AliCFVertexingHFCascade.cxx:726
 AliCFVertexingHFCascade.cxx:727
 AliCFVertexingHFCascade.cxx:728
 AliCFVertexingHFCascade.cxx:729
 AliCFVertexingHFCascade.cxx:730
 AliCFVertexingHFCascade.cxx:731
 AliCFVertexingHFCascade.cxx:732
 AliCFVertexingHFCascade.cxx:733
 AliCFVertexingHFCascade.cxx:734
 AliCFVertexingHFCascade.cxx:735
 AliCFVertexingHFCascade.cxx:736
 AliCFVertexingHFCascade.cxx:737
 AliCFVertexingHFCascade.cxx:738
 AliCFVertexingHFCascade.cxx:739
 AliCFVertexingHFCascade.cxx:740
 AliCFVertexingHFCascade.cxx:741
 AliCFVertexingHFCascade.cxx:742
 AliCFVertexingHFCascade.cxx:743
 AliCFVertexingHFCascade.cxx:744
 AliCFVertexingHFCascade.cxx:745
 AliCFVertexingHFCascade.cxx:746
 AliCFVertexingHFCascade.cxx:747
 AliCFVertexingHFCascade.cxx:748
 AliCFVertexingHFCascade.cxx:749
 AliCFVertexingHFCascade.cxx:750
 AliCFVertexingHFCascade.cxx:751
 AliCFVertexingHFCascade.cxx:752
 AliCFVertexingHFCascade.cxx:753
 AliCFVertexingHFCascade.cxx:754
 AliCFVertexingHFCascade.cxx:755
 AliCFVertexingHFCascade.cxx:756
 AliCFVertexingHFCascade.cxx:757
 AliCFVertexingHFCascade.cxx:758
 AliCFVertexingHFCascade.cxx:759
 AliCFVertexingHFCascade.cxx:760
 AliCFVertexingHFCascade.cxx:761