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

#include <TMath.h>
#include <TRandom.h>
#include <TProfile.h>
#include <TClonesArray.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TF1.h>
#include <TParticle.h>
#include "AliStack.h"
#include "AliAODEvent.h"
#include "AliAODMCHeader.h"
#include "AliGenEventHeader.h"
#include "AliAODMCParticle.h"
#include "AliAODRecoDecayHF.h"
#include "AliVertexingHFUtils.h"

/* $Id$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Class with functions useful for different D2H analyses        //
// - event plane resolution                                      //
// - <pt> calculation with side band subtraction                 //
// - tracklet multiplicity calculation                            //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

ClassImp(AliVertexingHFUtils)

//______________________________________________________________________
AliVertexingHFUtils::AliVertexingHFUtils():TObject(),
  fK(1),
  fSubRes(1.),
  fMinEtaForTracklets(-1.),
  fMaxEtaForTracklets(1.)
{
  // Default contructor
}


//______________________________________________________________________
AliVertexingHFUtils::AliVertexingHFUtils(Int_t k):
  TObject(),
  fK(k),
  fSubRes(1.),
  fMinEtaForTracklets(-1.),
  fMaxEtaForTracklets(1.)
{
  // Standard constructor
}


//______________________________________________________________________
void AliVertexingHFUtils::ComputeSignificance(Double_t signal, Double_t  errsignal, Double_t  background, Double_t  errbackground, Double_t &significance,Double_t &errsignificance){
  // calculate significance from S, B and errors


  Double_t errSigSq=errsignal*errsignal;
  Double_t errBkgSq=errbackground*errbackground;
  Double_t sigPlusBkg=signal+background;
  if(sigPlusBkg>0. && signal>0.){
    significance =  signal/TMath::Sqrt(signal+background);
    errsignificance = significance*TMath::Sqrt((errSigSq+errBkgSq)/(4.*sigPlusBkg*sigPlusBkg)+(background/sigPlusBkg)*errSigSq/signal/signal);
  }else{
    significance=0.;
    errsignificance=0.;
  }
  return;

}
//______________________________________________________________________
Double_t AliVertexingHFUtils::Pol(Double_t x, Int_t k){
  // compute chi from polynomial approximation
  Double_t c[5];
  if(k==1){ 
    c[0]=0.626657; c[1]=0.; c[2]=-0.09694; c[3]=0.02754; c[4]=-0.002283;
  }
  else if(k==2){
    c[0]=0.; c[1]=0.25; c[2]=-0.011414; c[3]=-0.034726; c[4]=0.006815;
  }
  else return -1;
  return c[0]*x+c[1]*x*x+c[2]*x*x*x+c[3]*x*x*x*x+c[4]*x*x*x*x*x;
}

//______________________________________________________________________
Double_t AliVertexingHFUtils:: ResolK1(Double_t x){
  return TMath::Sqrt(TMath::Pi()/8)*x*TMath::Exp(-x*x/4)*(TMath::BesselI0(x*x/4)+TMath::BesselI1(x*x/4));
}


//______________________________________________________________________
Double_t AliVertexingHFUtils::FindChi(Double_t res,  Int_t k){
  // compute chi variable (=v2*sqrt(N)) from external values

  Double_t x1=0;
  Double_t x2=15;
  Double_t y1,y2;
  if(k==1){
    y1=ResolK1(x1)-res;
    y2=ResolK1(x2)-res;
  }
  else if(k==2){
    y1=Pol(x1,2)-res;
    y2=Pol(x2,2)-res;
  }
  else return -1;

  if(y1*y2>0) return -1;
  if(y1==0) return y1;
  if(y2==0) return y2;
  Double_t xmed,ymed;
  Int_t jiter=0;
  while((x2-x1)>0.0001){
    xmed=0.5*(x1+x2);
    if(k==1){
      y1=ResolK1(x1)-res;
      y2=ResolK1(x2)-res;
      ymed=ResolK1(xmed)-res;
    }
    else if(k==2){
      y1=Pol(x1,2)-res;
      y2=Pol(x2,2)-res;
      ymed=Pol(xmed,2)-res;
    }
    else return -1;
    if((y1*ymed)<0) x2=xmed;
    if((y2*ymed)<0)x1=xmed;
    if(ymed==0) return xmed;
    jiter++;
  }
  return 0.5*(x1+x2);
}

//______________________________________________________________________
Double_t AliVertexingHFUtils::GetFullEvResol(Double_t resSub, Int_t k){
  // computes event plane resolution starting from sub event resolution
  Double_t chisub=FindChi(resSub,k);
  Double_t chifull=chisub*TMath::Sqrt(2);
  if(k==1) return ResolK1(chifull);
  else if(k==2) return Pol(chifull,2);
  else{
    printf("k should be <=2\n");
    return 1.;
  }
}

//______________________________________________________________________
Double_t AliVertexingHFUtils::GetFullEvResol(const TH1F* hSubEvCorr, Int_t k){
  // computes event plane resolution starting from sub event correlation histogram
  if(!hSubEvCorr) return 1.;
  Double_t resSub=GetSubEvResol(hSubEvCorr);
  return GetFullEvResol(resSub,k);
}
//______________________________________________________________________
Double_t AliVertexingHFUtils::GetFullEvResolLowLim(const TH1F* hSubEvCorr, Int_t k){
  // computes low limit event plane resolution starting from sub event correlation histogram
  if(!hSubEvCorr) return 1.;
  Double_t resSub=GetSubEvResolLowLim(hSubEvCorr);
  printf("%f\n",resSub);
  return GetFullEvResol(resSub,k);  
}
//______________________________________________________________________
Double_t AliVertexingHFUtils::GetFullEvResolHighLim(const TH1F* hSubEvCorr, Int_t k){
  // computes high limit event plane resolution starting from sub event correlation histogram
  if(!hSubEvCorr) return 1.;
  Double_t resSub=GetSubEvResolHighLim(hSubEvCorr);
  printf("%f\n",resSub);
  return GetFullEvResol(resSub,k);  
}
//______________________________________________________________________
Int_t AliVertexingHFUtils::GetNumberOfTrackletsInEtaRange(AliAODEvent* ev, Double_t mineta, Double_t maxeta){
  // counts tracklets in given eta range
  AliAODTracklets* tracklets=ev->GetTracklets();
  Int_t nTr=tracklets->GetNumberOfTracklets();
  Int_t count=0;
  for(Int_t iTr=0; iTr<nTr; iTr++){
    Double_t theta=tracklets->GetTheta(iTr);
    Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
    if(eta>mineta && eta<maxeta) count++;
  }
  return count;
}
//______________________________________________________________________
Int_t AliVertexingHFUtils::GetGeneratedMultiplicityInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta){
  // counts generated particles in fgiven eta range

  Int_t nChargedMC=0;
  for(Int_t i=0;i<arrayMC->GetEntriesFast();i++){
    AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
    Int_t charge = part->Charge();
    Double_t eta = part->Eta();
    if(charge!=0 && eta>mineta && eta<maxeta) nChargedMC++;
  } 
  return nChargedMC;
}
//______________________________________________________________________
Int_t AliVertexingHFUtils::GetGeneratedPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta){
  // counts generated primary particles in given eta range

  Int_t nChargedMC=0;
  for(Int_t i=0;i<arrayMC->GetEntriesFast();i++){
    AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
    Int_t charge = part->Charge();
    Double_t eta = part->Eta();
    if(charge!=0 && eta>mineta && eta<maxeta){
      if(part->IsPrimary())nChargedMC++;
    } 
  }  
  return nChargedMC;
}
//______________________________________________________________________
Int_t AliVertexingHFUtils::GetGeneratedPhysicalPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta){
  // counts generated primary particles in given eta range

  Int_t nChargedMC=0;
  for(Int_t i=0;i<arrayMC->GetEntriesFast();i++){
    AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
    Int_t charge = part->Charge();
    Double_t eta = part->Eta();
    if(charge!=0 && eta>mineta && eta<maxeta){
      if(part->IsPhysicalPrimary())nChargedMC++;
    } 
  }
  return nChargedMC;
}


//______________________________________________________________________
Double_t AliVertexingHFUtils::GetVZEROAEqualizedMultiplicity(AliAODEvent* ev){
  //
  // Method to get VZERO-A equalized multiplicty as done in AliCentralitySelectionTask
  //  getting the equalized VZERO factors from the tender or AOD
  // http://git.cern.ch/pubweb/AliRoot.git/blob/HEAD:/ANALYSIS/AliCentralitySelectionTask.cxx#l1345

  Double_t multV0AEq=0;
  for(Int_t iCh = 32; iCh < 64; ++iCh) {
    Double_t mult = ev->GetVZEROEqMultiplicity(iCh);
    multV0AEq += mult;
  }
  return multV0AEq;
}

//______________________________________________________________________
Double_t AliVertexingHFUtils::GetVZEROCEqualizedMultiplicity(AliAODEvent* ev){
  // Method to get VZERO-C equalized multiplicty as done in AliCentralitySelectionTask
  //  getting the equalized VZERO factors from the tender or AOD
  // http://git.cern.ch/pubweb/AliRoot.git/blob/HEAD:/ANALYSIS/AliCentralitySelectionTask.cxx#l1345

  Double_t multV0CEq=0;
  for(Int_t iCh = 0; iCh < 32; ++iCh) {
    Double_t mult = ev->GetVZEROEqMultiplicity(iCh);
    multV0CEq += mult;
  }
  return multV0CEq;
}

//______________________________________________________________________
void AliVertexingHFUtils::AveragePt(Float_t& averagePt, Float_t& errorPt,Float_t ptmin,Float_t ptmax, TH2F* hMassD, Float_t massFromFit, Float_t sigmaFromFit, TF1* funcB2, Float_t sigmaRangeForSig,Float_t sigmaRangeForBkg, Float_t minMass, Float_t maxMass, Int_t rebin){

  // Compute <pt> from 2D histogram M vs pt

  //Make 2D histos in the desired pt range
  Int_t start=hMassD->FindBin(ptmin);
  Int_t end=hMassD->FindBin(ptmax)-1;
  const Int_t nx=end-start;
  TH2F *hMassDpt=new TH2F("hptmass","hptmass",nx,ptmin,ptmax,hMassD->GetNbinsY(),hMassD->GetYaxis()->GetBinLowEdge(1),hMassD->GetYaxis()->GetBinLowEdge(hMassD->GetNbinsY())+hMassD->GetYaxis()->GetBinWidth(hMassD->GetNbinsY()));
  for(Int_t ix=start;ix<end;ix++){
    for(Int_t iy=1;iy<=hMassD->GetNbinsY();iy++){
      hMassDpt->SetBinContent(ix-start+1,iy,hMassD->GetBinContent(ix,iy));
      hMassDpt->SetBinError(ix-start+1,iy,hMassD->GetBinError(ix,iy));
    }
  }

  Double_t minMassSig=massFromFit-sigmaRangeForSig*sigmaFromFit;
  Double_t maxMassSig=massFromFit+sigmaRangeForSig*sigmaFromFit;
  Int_t minBinSig=hMassD->GetYaxis()->FindBin(minMassSig);
  Int_t maxBinSig=hMassD->GetYaxis()->FindBin(maxMassSig);
  Double_t minMassSigBin=hMassD->GetYaxis()->GetBinLowEdge(minBinSig);
  Double_t maxMassSigBin=hMassD->GetYaxis()->GetBinLowEdge(maxBinSig)+hMassD->GetYaxis()->GetBinWidth(maxBinSig);
  //  printf("Signal Fit Limits = %f %f\n",minMassSigBin,maxMassSigBin);

  Double_t maxMassBkgLow=massFromFit-sigmaRangeForBkg*sigmaFromFit;
  Int_t minBinBkgLow=TMath::Max(hMassD->GetYaxis()->FindBin(minMass),2);
  Int_t maxBinBkgLow=hMassD->GetYaxis()->FindBin(maxMassBkgLow);
  Double_t minMassBkgLowBin=hMassD->GetYaxis()->GetBinLowEdge(minBinBkgLow);
  Double_t maxMassBkgLowBin=hMassD->GetYaxis()->GetBinLowEdge(maxBinBkgLow)+hMassD->GetYaxis()->GetBinWidth(maxBinBkgLow);
  Double_t minMassBkgHi=massFromFit+sigmaRangeForBkg*sigmaFromFit;
  Int_t minBinBkgHi=hMassD->GetYaxis()->FindBin(minMassBkgHi);
  Int_t maxBinBkgHi=TMath::Min(hMassD->GetYaxis()->FindBin(maxMass),hMassD->GetNbinsY()-1);
  Double_t minMassBkgHiBin=hMassD->GetYaxis()->GetBinLowEdge(minBinBkgHi);
  Double_t maxMassBkgHiBin=hMassD->GetYaxis()->GetBinLowEdge(maxBinBkgHi)+hMassD->GetYaxis()->GetBinWidth(maxBinBkgHi);
  //  printf("BKG Fit Limits = %f %f  && %f %f\n",minMassBkgLowBin,maxMassBkgLowBin,minMassBkgHiBin,maxMassBkgHiBin);

  Double_t bkgSig=funcB2->Integral(minMassSigBin,maxMassSigBin);
  Double_t bkgLow=funcB2->Integral(minMassBkgLowBin,maxMassBkgLowBin);
  Double_t bkgHi=funcB2->Integral(minMassBkgHiBin,maxMassBkgHiBin);
  //  printf("Background integrals = %f %f %f\n",bkgLow,bkgSig,bkgHi);

  TH1F* hMptBkgLo=(TH1F*)hMassDpt->ProjectionX("hPtBkgLoBin",minBinBkgLow,maxBinBkgLow);
  TH1F* hMptBkgHi=(TH1F*)hMassDpt->ProjectionX("hPtBkgHiBin",minBinBkgHi,maxBinBkgHi);
  TH1F* hMptSigReg=(TH1F*)hMassDpt->ProjectionX("hCPtBkgSigBin",minBinSig,maxBinSig);

  hMptBkgLo->Rebin(rebin);
  hMptBkgHi->Rebin(rebin);
  hMptSigReg->Rebin(rebin);

  hMptBkgLo->Sumw2();
  hMptBkgHi->Sumw2();
  TH1F* hMptBkgLoScal=(TH1F*)hMptBkgLo->Clone("hPtBkgLoScalBin");
  hMptBkgLoScal->Scale(bkgSig/bkgLow);
  TH1F* hMptBkgHiScal=(TH1F*)hMptBkgHi->Clone("hPtBkgHiScalBin");
  hMptBkgHiScal->Scale(bkgSig/bkgHi);

  TH1F* hMptBkgAver=0x0;
  hMptBkgAver=(TH1F*)hMptBkgLoScal->Clone("hPtBkgAverBin");
  hMptBkgAver->Add(hMptBkgHiScal);
  hMptBkgAver->Scale(0.5);
  TH1F* hMptSig=(TH1F*)hMptSigReg->Clone("hCPtSigBin");
  hMptSig->Add(hMptBkgAver,-1.);   
 
  averagePt = hMptSig->GetMean();
  errorPt = hMptSig->GetMeanError();

  delete hMptBkgLo;
  delete hMptBkgHi;
  delete hMptSigReg;
  delete hMptBkgLoScal;
  delete hMptBkgHiScal;
  delete hMptBkgAver;
  delete hMassDpt;
  delete hMptSig;

}
//____________________________________________________________________________
Bool_t AliVertexingHFUtils::CheckT0TriggerFired(AliAODEvent* aodEv){
  // check if T0VTX trigger was fired, based on a workaround suggested by Alla
  const Double32_t *mean = aodEv->GetT0TOF();
  if(mean && mean[0]<9999.) return kTRUE;
  else return kFALSE;
}
//____________________________________________________________________________
Double_t AliVertexingHFUtils::GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partD) {
  // true impact parameter calculation for Dzero

  if(!partD || !arrayMC || !mcHeader) return 99999.;
  Int_t code=partD->GetPdgCode();
  if(TMath::Abs(code)!=421) return 99999.;

  Double_t vtxTrue[3];
  mcHeader->GetVertex(vtxTrue);
  Double_t origD[3];
  partD->XvYvZv(origD);
  Short_t charge=partD->Charge();
  Double_t pXdauTrue[2],pYdauTrue[2],pZdauTrue[2];
  for(Int_t iDau=0; iDau<2; iDau++){
    pXdauTrue[iDau]=0.;
    pYdauTrue[iDau]=0.;
    pZdauTrue[iDau]=0.;
  }

  Int_t nDau=partD->GetNDaughters();
  Int_t labelFirstDau = partD->GetDaughter(0); 
  if(nDau==2){
    for(Int_t iDau=0; iDau<2; iDau++){
      Int_t ind = labelFirstDau+iDau;
      AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(arrayMC->At(ind));
      if(!part){
	printf("Daughter particle not found in MC array");
	return 99999.;
      } 
      pXdauTrue[iDau]=part->Px();
      pYdauTrue[iDau]=part->Py();
      pZdauTrue[iDau]=part->Pz();
    }
  }else{
    return 99999.;
  }

  Double_t d0dummy[2]={0.,0.};
  AliAODRecoDecayHF aodDvsMC(vtxTrue,origD,2,charge,pXdauTrue,pYdauTrue,pZdauTrue,d0dummy);
  return aodDvsMC.ImpParXY();

}
//____________________________________________________________________________
Double_t AliVertexingHFUtils::GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partD) {
  // true impact parameter calculation for Dplus

  if(!partD || !arrayMC || !mcHeader) return 99999.;
  Int_t code=partD->GetPdgCode();
  if(TMath::Abs(code)!=411) return 99999.;

  Double_t vtxTrue[3];
  mcHeader->GetVertex(vtxTrue);
  Double_t origD[3];
  partD->XvYvZv(origD);
  Short_t charge=partD->Charge();
  Double_t pXdauTrue[3],pYdauTrue[3],pZdauTrue[3];
  for(Int_t iDau=0; iDau<3; iDau++){
    pXdauTrue[iDau]=0.;
    pYdauTrue[iDau]=0.;
    pZdauTrue[iDau]=0.;
  }

  Int_t nDau=partD->GetNDaughters();
  Int_t labelFirstDau = partD->GetDaughter(0); 
  if(nDau==3){
    for(Int_t iDau=0; iDau<3; iDau++){
      Int_t ind = labelFirstDau+iDau;
      AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(arrayMC->At(ind));
      if(!part){
	printf("Daughter particle not found in MC array");
	return 99999.;
      } 
      pXdauTrue[iDau]=part->Px();
      pYdauTrue[iDau]=part->Py();
      pZdauTrue[iDau]=part->Pz();
    }
  }else if(nDau==2){
    Int_t theDau=0;
    for(Int_t iDau=0; iDau<2; iDau++){
      Int_t ind = labelFirstDau+iDau;
      AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(arrayMC->At(ind));
      if(!part){
	printf("Daughter particle not found in MC array");
	return 99999.;
      } 
      Int_t pdgCode=TMath::Abs(part->GetPdgCode());
      if(pdgCode==211 || pdgCode==321){
	pXdauTrue[theDau]=part->Px();
	pYdauTrue[theDau]=part->Py();
	pZdauTrue[theDau]=part->Pz();
	++theDau;
      }else{
	Int_t nDauRes=part->GetNDaughters();
	if(nDauRes==2){
	  Int_t labelFirstDauRes = part->GetDaughter(0); 	
	  for(Int_t iDauRes=0; iDauRes<2; iDauRes++){
	    Int_t indDR = labelFirstDauRes+iDauRes;
	    AliAODMCParticle* partDR = dynamic_cast<AliAODMCParticle*>(arrayMC->At(indDR));
	    if(!partDR){
	      printf("Daughter particle not found in MC array");
	      return 99999.;
	    } 
	    
	    Int_t pdgCodeDR=TMath::Abs(partDR->GetPdgCode());
 	    if(pdgCodeDR==211 || pdgCodeDR==321){
	      pXdauTrue[theDau]=partDR->Px();
	      pYdauTrue[theDau]=partDR->Py();
	      pZdauTrue[theDau]=partDR->Pz();
	      ++theDau;
	    }
	  }
	}
      }
    }
    if(theDau!=3){
      printf("Wrong number of decay prongs");
      return 99999.;
    }
  }

  Double_t d0dummy[3]={0.,0.,0.};
  AliAODRecoDecayHF aodDvsMC(vtxTrue,origD,3,charge,pXdauTrue,pYdauTrue,pZdauTrue,d0dummy);
  return aodDvsMC.ImpParXY();

}



//____________________________________________________________________________
Double_t AliVertexingHFUtils::GetCorrectedNtracklets(TProfile* estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult) {
  //
  // Correct the number of accepted tracklets based on a TProfile Hist
  //
  //

  if(TMath::Abs(vtxZ)>10.0){
    //    printf("ERROR: Z vertex out of range for correction of multiplicity\n");
    return uncorrectedNacc;
  }

  if(!estimatorAvg){
    printf("ERROR: Missing TProfile for correction of multiplicity\n");
    return uncorrectedNacc;
  }

  Double_t localAvg = estimatorAvg->GetBinContent(estimatorAvg->FindBin(vtxZ));

  Double_t deltaM = uncorrectedNacc*(refMult/localAvg - 1);

  Double_t correctedNacc = uncorrectedNacc + (deltaM>0 ? 1 : -1) * gRandom->Poisson(TMath::Abs(deltaM));

  return correctedNacc;
}
//______________________________________________________________________
TString AliVertexingHFUtils::GetGenerator(Int_t label, AliAODMCHeader* header){
  // get the name of the generator that produced a given particle

  Int_t nsumpart=0;
  TList *lh=header->GetCocktailHeaders();
  Int_t nh=lh->GetEntries();
  for(Int_t i=0;i<nh;i++){
    AliGenEventHeader* gh=(AliGenEventHeader*)lh->At(i);
    TString genname=gh->GetName();
    Int_t npart=gh->NProduced();
    if(label>=nsumpart && label<(nsumpart+npart)) return genname;
    nsumpart+=npart;
  }
  TString empty="";
  return empty;
}
//_____________________________________________________________________
void AliVertexingHFUtils::GetTrackPrimaryGenerator(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC,TString &nameGen){

  // method to check if a track comes from a given generator

  Int_t lab=TMath::Abs(track->GetLabel());
  nameGen=GetGenerator(lab,header);
  
  //  Int_t countControl=0;
  
  while(nameGen.IsWhitespace()){
    AliAODMCParticle *mcpart= (AliAODMCParticle*)arrayMC->At(lab);
    if(!mcpart){
      printf("AliVertexingHFUtils::IsTrackInjected - BREAK: No valid AliAODMCParticle at label %i\n",lab);
      break;
    }
    Int_t mother = mcpart->GetMother();
    if(mother<0){
      printf("AliVertexingHFUtils::IsTrackInjected - BREAK: Reached primary particle without valid mother\n");
      break;
    }
    lab=mother;
    nameGen=GetGenerator(mother,header);
    // countControl++;
    // if(countControl>=10){ // 10 = arbitrary number; protection from infinite loops
    //   printf("AliVertexingHFUtils::IsTrackInjected - BREAK: Protection from infinite loop active\n");
    //   break;
    // }
  }
  
  return;
}
//----------------------------------------------------------------------
Bool_t AliVertexingHFUtils::IsTrackInjected(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC){
  // method to check if a track comes from the signal event or from the underlying Hijing event
  TString nameGen;
  GetTrackPrimaryGenerator(track,header,arrayMC,nameGen);
  
  if(nameGen.IsWhitespace() || nameGen.Contains("ijing")) return kFALSE;
  
  return kTRUE;
}
//____________________________________________________________________________
Bool_t AliVertexingHFUtils::IsCandidateInjected(AliAODRecoDecayHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC){
  // method to check if a D meson candidate comes from the signal event or from the underlying Hijing event

  Int_t nprongs=cand->GetNProngs();
  for(Int_t i=0;i<nprongs;i++){
    AliAODTrack *daugh=(AliAODTrack*)cand->GetDaughter(i);
    if(IsTrackInjected(daugh,header,arrayMC)) return kTRUE;
  }
  return kFALSE;
}
//____________________________________________________________________________
Bool_t AliVertexingHFUtils::HasCascadeCandidateAnyDaughInjected(AliAODRecoCascadeHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC){
  // method to check if a cascade candidate comes from the signal event or from the underlying Hijing event

  AliAODTrack* bach = cand->GetBachelor();
  if(IsTrackInjected(bach, header, arrayMC)) {
    AliDebug(2, "Bachelor is injected, the whole candidate is then injected");
    return kTRUE;
  }
  AliAODv0* v0 = cand->Getv0();
  Int_t nprongs = v0->GetNProngs();
  for(Int_t i = 0; i < nprongs; i++){
    AliAODTrack *daugh = (AliAODTrack*)v0->GetDaughter(i);
    if(IsTrackInjected(daugh,header,arrayMC)) {
      AliDebug(2, Form("V0 daughter number %d is injected, the whole candidate is then injected", i));
      return kTRUE;
    }
  }
  return kFALSE;
}
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckOrigin(AliStack* stack, TParticle *mcPart, Bool_t searchUpToQuark){
  // checking whether the mother of the particles come from a charm or a bottom quark

  Int_t pdgGranma = 0;
  Int_t mother = 0;
  mother = mcPart->GetFirstMother();
  Int_t istep = 0;
  Int_t abspdgGranma =0;
  Bool_t isFromB=kFALSE;
  Bool_t isQuarkFound=kFALSE;
  while (mother >0 ){
    istep++;
    TParticle* mcGranma = stack->Particle(mother);
    if (mcGranma){
      pdgGranma = mcGranma->GetPdgCode();
      abspdgGranma = TMath::Abs(pdgGranma);
      if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
	isFromB=kTRUE;
      }
      if(abspdgGranma==4 || abspdgGranma==5) isQuarkFound=kTRUE;
      mother = mcGranma->GetFirstMother();
    }else{
      printf("CheckOrigin: Failed casting the mother particle!");
      break;
    }
  }
  if(searchUpToQuark && !isQuarkFound) return 0;
  if(isFromB) return 5;
  else return 4;

}
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark){
  // checking whether the mother of the particles come from a charm or a bottom quark

  Int_t pdgGranma = 0;
  Int_t mother = 0;
  mother = mcPart->GetMother();
  Int_t istep = 0;
  Int_t abspdgGranma =0;
  Bool_t isFromB=kFALSE;
  Bool_t isQuarkFound=kFALSE;
  while (mother >0 ){
    istep++;
    AliAODMCParticle* mcGranma = dynamic_cast<AliAODMCParticle*>(arrayMC->At(mother));
    if (mcGranma){
      pdgGranma = mcGranma->GetPdgCode();
      abspdgGranma = TMath::Abs(pdgGranma);
      if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
	isFromB=kTRUE;
      }
      if(abspdgGranma==4 || abspdgGranma==5) isQuarkFound=kTRUE;
      mother = mcGranma->GetMother();
    }else{
      printf("AliVertexingHFUtils::CheckOrigin: Failed casting the mother particle!");
      break;
    }
  }
  if(searchUpToQuark && !isQuarkFound) return 0;
  if(isFromB) return 5;
  else return 4;

}

//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckD0Decay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the D0 decay channel. Returns 1 for the D0->Kpi case, 2 for the D0->Kpipipi case, -1 in other cases

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=421) return -1;
  
  Int_t nDau=mcPart->GetNDaughters();
  
  if(nDau==2){
    Int_t daughter0 = mcPart->GetDaughter(0);
    Int_t daughter1 = mcPart->GetDaughter(1);
    TParticle* mcPartDaughter0 = stack->Particle(daughter0);
    TParticle* mcPartDaughter1 = stack->Particle(daughter1);
    if(!mcPartDaughter0 || !mcPartDaughter1) return -1;
    arrayDauLab[0]=daughter0;
    arrayDauLab[1]=daughter1;
    Int_t pdgCode0=mcPartDaughter0->GetPdgCode();
    Int_t pdgCode1=mcPartDaughter1->GetPdgCode();
    if(!(TMath::Abs(pdgCode0)==321 && TMath::Abs(pdgCode1)==211) &&
       !(TMath::Abs(pdgCode0)==211 && TMath::Abs(pdgCode1)==321)){
      return -1;
    }
    if(TMath::Abs(pdgCode0)==321 && (pdgD*pdgCode0)>0) return -1;
    if(TMath::Abs(pdgCode1)==321 && (pdgD*pdgCode1)>0) return -1;
    if((pdgCode0*pdgCode1)>0) return -1;
    Double_t sumPxDau=mcPartDaughter0->Px()+mcPartDaughter1->Px();
    Double_t sumPyDau=mcPartDaughter0->Py()+mcPartDaughter1->Py();
    Double_t sumPzDau=mcPartDaughter0->Pz()+mcPartDaughter1->Pz();
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    return 1;
  }
  
  if(nDau==3 || nDau==4){
    Int_t nKaons=0;
    Int_t nPions=0;
    Double_t sumPxDau=0.;
    Double_t sumPyDau=0.;
    Double_t sumPzDau=0.;
    Int_t nFoundKpi=0;
    Int_t labelFirstDau = mcPart->GetDaughter(0);
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	if(pdgD>0 && pdgdau>0) return -1;
	if(pdgD<0 && pdgdau<0) return -1;
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>4) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>4) return -1;
      }else if(TMath::Abs(pdgdau)==113 || TMath::Abs(pdgdau)==313){
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  TParticle* resdau=stack->Particle(indResDau);
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    if(pdgD>0 && pdgresdau>0) return -1;
	    if(pdgD<0 && pdgresdau<0) return -1;
	    nKaons++;
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>4) return -1;
	  }
	  if(TMath::Abs(pdgresdau)==211){
	    nPions++;
	      sumPxDau+=resdau->Px();
	      sumPyDau+=resdau->Py();
	      sumPzDau+=resdau->Pz();
	      arrayDauLab[nFoundKpi++]=indResDau;
	      if(nFoundKpi>4) return -1;
	  }
	}
      }else{
	return -1;
      }
    }
    if(nPions!=3) return -1;
    if(nKaons!=1) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -1;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -1;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -1;
    return 2;
  }
  return -1;
}

//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckD0Decay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab){
 // Checks the D0 decay channel. Returns 1 for the D0->Kpi case, 2 for the D0->Kpipipi case, -1 in other cases

  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=421) return -1;

  Int_t nDau=mcPart->GetNDaughters();

  if(nDau==2){
    Int_t daughter0 = mcPart->GetDaughter(0);
    Int_t daughter1 = mcPart->GetDaughter(1);
    AliAODMCParticle* mcPartDaughter0 = dynamic_cast<AliAODMCParticle*>(arrayMC->At(daughter0));
    AliAODMCParticle* mcPartDaughter1 = dynamic_cast<AliAODMCParticle*>(arrayMC->At(daughter1));
    if(!mcPartDaughter0 || !mcPartDaughter1) return -1;
    arrayDauLab[0]=daughter0;
    arrayDauLab[1]=daughter1;
    Int_t pdgCode0=mcPartDaughter0->GetPdgCode();
    Int_t pdgCode1=mcPartDaughter1->GetPdgCode();
    if(!(TMath::Abs(pdgCode0)==321 && TMath::Abs(pdgCode1)==211) &&
       !(TMath::Abs(pdgCode0)==211 && TMath::Abs(pdgCode1)==321)){
      return -1;
    }
    if(TMath::Abs(pdgCode0)==321 && (pdgD*pdgCode0)>0) return -1;
    if(TMath::Abs(pdgCode1)==321 && (pdgD*pdgCode1)>0) return -1;
    if((pdgCode0*pdgCode1)>0) return -1;
    Double_t sumPxDau=mcPartDaughter0->Px()+mcPartDaughter1->Px();
    Double_t sumPyDau=mcPartDaughter0->Py()+mcPartDaughter1->Py();
    Double_t sumPzDau=mcPartDaughter0->Pz()+mcPartDaughter1->Pz();
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    return 1;
  }

  if(nDau==3 || nDau==4){
    Int_t nKaons=0;
    Int_t nPions=0;
    Double_t sumPxDau=0.;
    Double_t sumPyDau=0.;
    Double_t sumPzDau=0.;
    Int_t nFoundKpi=0;
    Int_t labelFirstDau = mcPart->GetDaughter(0);
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      AliAODMCParticle* dau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indDau));
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	if(pdgD>0 && pdgdau>0) return -1;
	if(pdgD<0 && pdgdau<0) return -1;
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>4) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>4) return -1;
      }else if(TMath::Abs(pdgdau)==113 || TMath::Abs(pdgdau)==313){
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  AliAODMCParticle* resdau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indResDau));
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    if(pdgD>0 && pdgresdau>0) return -1;
	    if(pdgD<0 && pdgresdau<0) return -1;
	    nKaons++;
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>4) return -1;
	  }
	  if(TMath::Abs(pdgresdau)==211){
	    nPions++;
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>4) return -1;
	  }
	}
      }else{
	return -1;
      }
    }
    if(nPions!=3) return -1;
    if(nKaons!=1) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -1;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -1;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -1;
    return 2;
  }
  return -1;
}
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDplusDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Dplus decay channel. Returns 1 for the non-resonant case, 2 for the resonant case, -1 in other cases

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=411) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;
  
  if(nDau==3 || nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	if(pdgD*pdgdau>0) return -1;
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	if(pdgD*pdgdau<0) return -1;
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==313){
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  TParticle* resdau=stack->Particle(indResDau);
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    if(pdgD*pdgresdau>0) return -1;
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nKaons++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  if(TMath::Abs(pdgresdau)==211){
	    if(pdgD*pdgresdau<0) return -1;
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nPions++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  }
      }else{
	return -1;
      }
    }
    if(nPions!=2) return -1;
    if(nKaons!=1) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(nDau==3) return 1;
    else if(nDau==2) return 2;
  }
  
  return -1;
  
}

//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDplusDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab){
  // Checks the Dplus decay channel. Returns 1 for the non-resonant case, 2 for the resonant case, -1 in other cases

  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=411) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;

  if(nDau==3 || nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      AliAODMCParticle* dau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indDau));
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	if(pdgD*pdgdau>0) return -1;
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	if(pdgD*pdgdau<0) return -1;
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==313){
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  AliAODMCParticle* resdau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indResDau));
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    if(pdgD*pdgresdau>0) return -1;
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nKaons++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  if(TMath::Abs(pdgresdau)==211){
	    if(pdgD*pdgresdau<0) return -1;
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nPions++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	}
       }else{
	return -1;
      }
    }
    if(nPions!=2) return -1;
    if(nKaons!=1) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(nDau==3) return 1;
    else if(nDau==2) return 2;
  }

  return -1;

}
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDplusKKpiDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Ds decay channel. Returns 1 for Ds->phipi->KKpi, 2 for Ds->K0*K->KKpi, 3 for the non-resonant case

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=411) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;
  Bool_t isPhi=kFALSE;
  Bool_t isk0st=kFALSE;
  
  if(nDau==3 || nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==313 || TMath::Abs(pdgdau)==333){
	if(TMath::Abs(pdgdau)==313) isk0st=kTRUE;
	if(TMath::Abs(pdgdau)==333) isPhi=kTRUE;
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  TParticle* resdau=stack->Particle(indResDau);
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nKaons++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  if(TMath::Abs(pdgresdau)==211){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nPions++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  }
      }else{
	return -1;
      }
    }
    if(nPions!=1) return -1;
    if(nKaons!=2) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(nDau==3) return 3;
    else if(nDau==2){
      if(isk0st) return 2;
      if(isPhi) return 1;
    }
  }
  
  return -1;
  
}
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDplusK0spiDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Dplus->V0+pion decay channel. Returns 1 if success, -1 otherwise

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=411) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundpi=0;

  Int_t codeV0=-1;
  if(nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundpi++]=indDau;
	if(nFoundpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==311){
	codeV0=TMath::Abs(pdgdau);
	TParticle* v0=dau;
	if(codeV0==311){
	  Int_t nK0Dau=dau->GetNDaughters();
	  if(nK0Dau!=1) return -1;
	  Int_t indK0s=dau->GetDaughter(0);
	  if(indK0s<0) return -1;
	  v0=stack->Particle(indK0s);
	  if(!v0) return -1;
	  Int_t pdgK0sl=v0->GetPdgCode();
	  codeV0=TMath::Abs(pdgK0sl);
	}
	Int_t nV0Dau=v0->GetNDaughters();
	if(nV0Dau!=2) return -1;
	Int_t indFirstV0Dau=v0->GetDaughter(0);
	for(Int_t v0Dau=0; v0Dau<2; v0Dau++){
	  Int_t indV0Dau=indFirstV0Dau+v0Dau;
	  if(indV0Dau<0) return -1;
	  TParticle* v0dau=stack->Particle(indV0Dau);
	  if(!v0dau) return -1;
	  Int_t pdgv0dau=v0dau->GetPdgCode();
	  if(TMath::Abs(pdgv0dau)==211){
	    sumPxDau+=v0dau->Px();
	    sumPyDau+=v0dau->Py();
	    sumPzDau+=v0dau->Pz();
	    nPions++;
	    arrayDauLab[nFoundpi++]=indV0Dau;
	    if(nFoundpi>3) return -1;
	  }
	}
      }else{
	return -1;
      }
    }
    if(nPions!=3) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(codeV0==310) return 1;
  }
  return -1;
  
}

 
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDsDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Ds decay channel. Returns 1 for Ds->phipi->KKpi, 2 for Ds->K0*K->KKpi, 3 for the non-resonant case

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=431) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;
  Bool_t isPhi=kFALSE;
  Bool_t isk0st=kFALSE;
  
  if(nDau==3 || nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==313 || TMath::Abs(pdgdau)==333){
	if(TMath::Abs(pdgdau)==313) isk0st=kTRUE;
	if(TMath::Abs(pdgdau)==333) isPhi=kTRUE;
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  TParticle* resdau=stack->Particle(indResDau);
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nKaons++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  if(TMath::Abs(pdgresdau)==211){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nPions++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  }
      }else{
	return -1;
      }
    }
    if(nPions!=1) return -1;
    if(nKaons!=2) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(nDau==3) return 3;
    else if(nDau==2){
      if(isk0st) return 2;
      if(isPhi) return 1;
    }
  }
  
  return -1;
  
}
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDsK0sKDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Ds->K0s+S decay channel. Returns 1 in case of success, otherwise -1

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=431) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nPions=0;
  Int_t nKaons=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;

  Int_t codeV0=-1;
  if(nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==321){
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==311){
	codeV0=TMath::Abs(pdgdau);
	TParticle* v0=dau;
	if(codeV0==311){
	  Int_t nK0Dau=dau->GetNDaughters();
	  if(nK0Dau!=1) return -1;
	  Int_t indK0s=dau->GetDaughter(0);
	  if(indK0s<0) return -1;
	  v0=stack->Particle(indK0s);
	  if(!v0) return -1;
	  Int_t pdgK0sl=v0->GetPdgCode();
	  codeV0=TMath::Abs(pdgK0sl);
	}
	Int_t nV0Dau=v0->GetNDaughters();
	if(nV0Dau!=2) return -1;
	Int_t indFirstV0Dau=v0->GetDaughter(0);
	for(Int_t v0Dau=0; v0Dau<2; v0Dau++){
	  Int_t indV0Dau=indFirstV0Dau+v0Dau;
	  if(indV0Dau<0) return -1;
	  TParticle* v0dau=stack->Particle(indV0Dau);
	  if(!v0dau) return -1;
	  Int_t pdgv0dau=v0dau->GetPdgCode();
	  if(TMath::Abs(pdgv0dau)==211){
	    sumPxDau+=v0dau->Px();
	    sumPyDau+=v0dau->Py();
	    sumPzDau+=v0dau->Pz();
	    nPions++;
	    arrayDauLab[nFoundKpi++]=indV0Dau;
	    if(nFoundKpi>3) return -1;
	  }
	}
      }else{
	return -1;
      }
    }
    if(nPions!=2) return -1;
    if(nKaons!=1) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(codeV0==310) return 1;
  }
  return -1;
  
}

 
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDsDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab){
  // Checks the Ds decay channel. Returns 1 for Ds->phipi->KKpi, 2 for Ds->K0*K->KKpi, 3 for the non-resonant case

  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=431) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;
  Bool_t isPhi=kFALSE;
  Bool_t isk0st=kFALSE;
  
  if(nDau==3 || nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      AliAODMCParticle* dau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indDau));
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundKpi++]=indDau;
	if(nFoundKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==313 || TMath::Abs(pdgdau)==333){
	if(TMath::Abs(pdgdau)==313) isk0st=kTRUE;
	if(TMath::Abs(pdgdau)==333) isPhi=kTRUE;
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  AliAODMCParticle* resdau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indResDau));
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nKaons++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	  if(TMath::Abs(pdgresdau)==211){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nPions++;
	    arrayDauLab[nFoundKpi++]=indResDau;
	    if(nFoundKpi>3) return -1;
	  }
	}
      }else{
	return -1;
      }
    }
    if(nPions!=1) return -1;
    if(nKaons!=2) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(nDau==3) return 3;
    else if(nDau==2){
      if(isk0st) return 2;
      if(isPhi) return 1;
    }
  }
  
  return -1;
  
}
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDstarDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Dstar decay channel. Returns 1 for D*->D0pi->Kpipi, -1 in other cases

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=413) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  if(nDau!=2) return -1;

  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;

  for(Int_t iDau=0; iDau<nDau; iDau++){
    Int_t indDau = labelFirstDau+iDau;
    if(indDau<0) return -1;
    TParticle* dau=stack->Particle(indDau);
    if(!dau) return -1;
    Int_t pdgdau=dau->GetPdgCode();
    if(TMath::Abs(pdgdau)==421){
      Int_t nResDau=dau->GetNDaughters();
      if(nResDau!=2) return -1;
      Int_t indFirstResDau=dau->GetDaughter(0);
      for(Int_t resDau=0; resDau<2; resDau++){
	Int_t indResDau=indFirstResDau+resDau;
	if(indResDau<0) return -1;
	TParticle* resdau=stack->Particle(indResDau);
	if(!resdau) return -1;
	Int_t pdgresdau=resdau->GetPdgCode();
	if(TMath::Abs(pdgresdau)==321){
	  if(pdgD*pdgresdau>0) return -1;
	  sumPxDau+=resdau->Px();
	  sumPyDau+=resdau->Py();
	  sumPzDau+=resdau->Pz();
	  nKaons++;
	  arrayDauLab[nFoundKpi++]=indResDau;
	  if(nFoundKpi>3) return -1;
	}
	if(TMath::Abs(pdgresdau)==211){
	  if(pdgD*pdgresdau<0) return -1;
	  sumPxDau+=resdau->Px();
	  sumPyDau+=resdau->Py();
	  sumPzDau+=resdau->Pz();
	  nPions++;
	  arrayDauLab[nFoundKpi++]=indResDau;
	  if(nFoundKpi>3) return -1;
	}
      }
    }else if(TMath::Abs(pdgdau)==211){
      if(pdgD*pdgdau<0) return -1;
      nPions++;
      sumPxDau+=dau->Px();
      sumPyDau+=dau->Py();
      sumPzDau+=dau->Pz();
      arrayDauLab[nFoundKpi++]=indDau;
      if(nFoundKpi>3) return -1;
    }
  }

  if(nPions!=2) return -1;
  if(nKaons!=1) return -1;
  if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
  if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
  if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
  return 1;
  
}

//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckDstarDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab){
  // Checks the Dstar decay channel. Returns 1 for D*->D0pi->Kpipi, -1 in other cases

  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=413) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  if(nDau!=2) return -1;

  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundKpi=0;

  for(Int_t iDau=0; iDau<nDau; iDau++){
    Int_t indDau = labelFirstDau+iDau;
    if(indDau<0) return -1;
    AliAODMCParticle* dau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indDau));
    if(!dau) return -1;
    Int_t pdgdau=dau->GetPdgCode();
    if(TMath::Abs(pdgdau)==421){
      Int_t nResDau=dau->GetNDaughters();
      if(nResDau!=2) return -1;
      Int_t indFirstResDau=dau->GetDaughter(0);
      for(Int_t resDau=0; resDau<2; resDau++){
	Int_t indResDau=indFirstResDau+resDau;
	if(indResDau<0) return -1;
	AliAODMCParticle* resdau=dynamic_cast<AliAODMCParticle*>(arrayMC->At(indResDau)); 
	if(!resdau) return -1;
	Int_t pdgresdau=resdau->GetPdgCode();
	if(TMath::Abs(pdgresdau)==321){
	  if(pdgD*pdgresdau>0) return -1;
	  sumPxDau+=resdau->Px();
	  sumPyDau+=resdau->Py();
	  sumPzDau+=resdau->Pz();
	  nKaons++;
	  arrayDauLab[nFoundKpi++]=indResDau;
	  if(nFoundKpi>3) return -1;
	}
	if(TMath::Abs(pdgresdau)==211){
	  if(pdgD*pdgresdau<0) return -1;
	  sumPxDau+=resdau->Px();
	  sumPyDau+=resdau->Py();
	  sumPzDau+=resdau->Pz();
	  nPions++;
	  arrayDauLab[nFoundKpi++]=indResDau;
	  if(nFoundKpi>3) return -1;
	}
      }
    }else if(TMath::Abs(pdgdau)==211){
      if(pdgD*pdgdau<0) return -1;
      nPions++;
      sumPxDau+=dau->Px();
      sumPyDau+=dau->Py();
      sumPzDau+=dau->Pz();
      arrayDauLab[nFoundKpi++]=indDau;
      if(nFoundKpi>3) return -1;
    }
  }

  if(nPions!=2) return -1;
  if(nKaons!=1) return -1;
  if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
  if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
  if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
  return 1;
  
}

//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckLcpKpiDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Lc->pKpi decay channel. Returns 1 for non-resonant decays and 2, 3 or 4 for resonant ones, -1 in other cases

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=4122) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nKaons=0;
  Int_t nPions=0;
  Int_t nProtons=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundpKpi=0;

  Int_t codeRes=-1;
  if(nDau==3 || nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==321){
	nKaons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundpKpi++]=indDau;
	if(nFoundpKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundpKpi++]=indDau;
	if(nFoundpKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==2212){
	nProtons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundpKpi++]=indDau;
	if(nFoundpKpi>3) return -1;
      }else if(TMath::Abs(pdgdau)==313 || TMath::Abs(pdgdau)==3124 || 
	       TMath::Abs(pdgdau)==2224){
	codeRes=TMath::Abs(pdgdau);
	Int_t nResDau=dau->GetNDaughters();
	if(nResDau!=2) return -1;
	Int_t indFirstResDau=dau->GetDaughter(0);
	for(Int_t resDau=0; resDau<2; resDau++){
	  Int_t indResDau=indFirstResDau+resDau;
	  if(indResDau<0) return -1;
	  TParticle* resdau=stack->Particle(indResDau);
	  if(!resdau) return -1;
	  Int_t pdgresdau=resdau->GetPdgCode();
	  if(TMath::Abs(pdgresdau)==321){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nKaons++;
	    arrayDauLab[nFoundpKpi++]=indResDau;
	    if(nFoundpKpi>3) return -1;
	  }else if(TMath::Abs(pdgresdau)==211){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nPions++;
	    arrayDauLab[nFoundpKpi++]=indResDau;
	    if(nFoundpKpi>3) return -1;
	  }else if(TMath::Abs(pdgresdau)==2212){
	    sumPxDau+=resdau->Px();
	    sumPyDau+=resdau->Py();
	    sumPzDau+=resdau->Pz();
	    nProtons++;
	    arrayDauLab[nFoundpKpi++]=indResDau;
	    if(nFoundpKpi>3) return -1;
	  }
	}
      }else{
	return -1;
      }
    }
    if(nPions!=1) return -1;
    if(nKaons!=1) return -1;
    if(nProtons!=1) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(nDau==3) return 1;
    else if(nDau==2){
      if(codeRes==313) return 2;
      else if(codeRes==2224) return 3;
      else if(codeRes==3124) return 4;
    }  
  }
  return -1;
  
}

 
//____________________________________________________________________________
Int_t AliVertexingHFUtils::CheckLcV0bachelorDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab){
  // Checks the Lc->V0+bachelor decay channel. Returns 1 for pK0s, 2 for piLambda, 3 for pK0l -1 in other cases

  if(label<0) return -1;
  TParticle* mcPart = stack->Particle(label);
  Int_t pdgD=mcPart->GetPdgCode();
  if(TMath::Abs(pdgD)!=4122) return -1;

  Int_t nDau=mcPart->GetNDaughters();
  Int_t labelFirstDau = mcPart->GetDaughter(0);
  Int_t nPions=0;
  Int_t nProtons=0;
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;
  Int_t nFoundppi=0;

  Int_t codeV0=-1;
  if(nDau==2){
    for(Int_t iDau=0; iDau<nDau; iDau++){
      Int_t indDau = labelFirstDau+iDau;
      if(indDau<0) return -1;
      TParticle* dau=stack->Particle(indDau);
      if(!dau) return -1;
      Int_t pdgdau=dau->GetPdgCode();
      if(TMath::Abs(pdgdau)==211){
	nPions++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundppi++]=indDau;
	if(nFoundppi>3) return -1;
      }else if(TMath::Abs(pdgdau)==2212){
	nProtons++;
	sumPxDau+=dau->Px();
	sumPyDau+=dau->Py();
	sumPzDau+=dau->Pz();
	arrayDauLab[nFoundppi++]=indDau;
	if(nFoundppi>3) return -1;
      }else if(TMath::Abs(pdgdau)==311 ||  TMath::Abs(pdgdau)==3122){
	codeV0=TMath::Abs(pdgdau);
	TParticle* v0=dau;
	if(codeV0==311){
	  Int_t nK0Dau=dau->GetNDaughters();
	  if(nK0Dau!=1) return -1;
	  Int_t indK0s=dau->GetDaughter(0);
	  if(indK0s<0) return -1;
	  v0=stack->Particle(indK0s);
	  if(!v0) return -1;
	  Int_t pdgK0sl=v0->GetPdgCode();
	  codeV0=TMath::Abs(pdgK0sl);
	}
	Int_t nV0Dau=v0->GetNDaughters();
	if(nV0Dau!=2) return -1;
	Int_t indFirstV0Dau=v0->GetDaughter(0);
	for(Int_t v0Dau=0; v0Dau<2; v0Dau++){
	  Int_t indV0Dau=indFirstV0Dau+v0Dau;
	  if(indV0Dau<0) return -1;
	  TParticle* v0dau=stack->Particle(indV0Dau);
	  if(!v0dau) return -1;
	  Int_t pdgv0dau=v0dau->GetPdgCode();
	  if(TMath::Abs(pdgv0dau)==211){
	    sumPxDau+=v0dau->Px();
	    sumPyDau+=v0dau->Py();
	    sumPzDau+=v0dau->Pz();
	    nPions++;
	    arrayDauLab[nFoundppi++]=indV0Dau;
	    if(nFoundppi>3) return -1;
	  }else if(TMath::Abs(pdgv0dau)==2212){
	    sumPxDau+=v0dau->Px();
	    sumPyDau+=v0dau->Py();
	    sumPzDau+=v0dau->Pz();
	    nProtons++;
	    arrayDauLab[nFoundppi++]=indV0Dau;
	    if(nFoundppi>3) return -1;
	  }
	}
      }else{
	return -1;
      }
    }
    if(nPions!=2) return -1;
    if(nProtons!=1) return -1;
    if(TMath::Abs(mcPart->Px()-sumPxDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Py()-sumPyDau)>0.001) return -2;
    if(TMath::Abs(mcPart->Pz()-sumPzDau)>0.001) return -2;
    if(codeV0==310) return 1;
    else if(codeV0==3122) return 2;
  }
  return -1;
  
}

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