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

// $Id$

//-----------------------------------------------------------------------
// Class for HF corrections as a function of many variables and step 
// Author : C. Zampolli, CERN
// D. Caffarri, Univ & INFN Padova caffarri@pd.infn.it
// Base class for HF Unfolding - agrelli@uu.nl
//-----------------------------------------------------------------------

#include "TParticle.h"
#include "TClonesArray.h"
#include "AliAODMCParticle.h"
#include "AliAODRecoDecayHF.h"
#include "AliAODRecoDecayHF2Prong.h"
#include "AliAODRecoDecayHF3Prong.h"
#include "AliAODRecoDecayHF4Prong.h"
#include "AliAODRecoCascadeHF.h"
#include "AliAODMCHeader.h"
#include "AliAODEvent.h"
#include "AliLog.h"
#include "AliESDtrackCuts.h"
#include "AliESDtrack.h"
#include "AliCFTaskVertexingHF.h"

#include "AliCFVertexingHF.h"

//___________________________________________________________
AliCFVertexingHF::AliCFVertexingHF() :
	fmcArray(0x0),
	fRecoCandidate(0),
	fmcPartCandidate(0x0),
	fNDaughters(0),
	fNVar(0),
	fzPrimVertex(0),
	fzMCVertex(0),
	fFillFromGenerated(0),
	fOriginDselection(0),
	fKeepDfromB(kFALSE),
	fKeepDfromBOnly(kFALSE),
	fmcLabel(0),
	fProngs(-1),
	fLabelArray(0x0), 
	fCentValue(0.),
	fPtAccCut(0x0),
	fEtaAccCut(0x0),
	fFakeSelection(0),
	fFake(1.), // setting to MC value
	fRejectIfNoQuark(kFALSE),
	fMultiplicity(0.),
	fConfiguration(AliCFTaskVertexingHF::kCheetah) // by default, setting the fast configuration
{
	//
	// constructor
	//


	return;
}



//_____________________________________________________
AliCFVertexingHF::AliCFVertexingHF(TClonesArray *mcArray, UShort_t originDselection) :
	fmcArray(mcArray),
	fRecoCandidate(0),
	fmcPartCandidate(0x0),
	fNDaughters(0),
	fNVar(0),
	fzPrimVertex(0),
	fzMCVertex(0),
	fFillFromGenerated(0),
	fOriginDselection(0),
	fKeepDfromB(kFALSE),
	fKeepDfromBOnly(kFALSE),
	fmcLabel(0),
	fProngs(-1),
	fLabelArray(0x0),
	fCentValue(0.),
	fPtAccCut(0x0),
	fEtaAccCut(0x0),
	fFakeSelection(0),
	fFake(1.), // setting to MC value
	fRejectIfNoQuark(kFALSE),
	fMultiplicity(0.),
	fConfiguration(AliCFTaskVertexingHF::kCheetah) // by default, setting the fast configuration
{
	//
	// constructor with mcArray
	//
	
	SetDselection(originDselection);
	return;
}

//_______________________________________________________
AliCFVertexingHF::~AliCFVertexingHF()
{
	//
	// destructor
	//

	if (fmcArray) fmcArray = 0x0;
	if (fRecoCandidate) fRecoCandidate = 0x0;
	if (fmcPartCandidate) fmcPartCandidate = 0x0;
	if (fLabelArray){
	  	delete [] fLabelArray;
	  	fLabelArray = 0x0;
	}	
	if (fPtAccCut){
	  	delete [] fPtAccCut;
	  	fPtAccCut = 0x0;
	}	
	if (fEtaAccCut){
	  	delete [] fEtaAccCut;
	  	fEtaAccCut = 0x0;
	}	
}

//_____________________________________________________
AliCFVertexingHF& AliCFVertexingHF::operator=(const AliCFVertexingHF& c)
{	
	//
	// assigment operator
	//

	if (this!= &c){
		TObject::operator=(c);
		delete fmcArray;
		fmcArray = new TClonesArray(*(c.fmcArray));
		delete fRecoCandidate;
		fRecoCandidate = new AliAODRecoDecayHF(*(c.fRecoCandidate));
		delete fmcPartCandidate;
		fmcPartCandidate = new AliAODMCParticle(*(c.fmcPartCandidate));
		fNDaughters = c.fNDaughters;
		fNVar = c.fNVar;
		fzPrimVertex = c.fzPrimVertex;
		fzMCVertex = c.fzMCVertex;
		fFillFromGenerated = c.fFillFromGenerated;
		fOriginDselection = c.fOriginDselection;
		fKeepDfromB = c.fKeepDfromB;
		fKeepDfromBOnly = c.fKeepDfromBOnly;
		fmcLabel = c.fmcLabel;
		fProngs=c.fProngs;
		fCentValue=c.fCentValue;
		fFakeSelection=c.fFakeSelection;
		fFake=c.fFake;
		fRejectIfNoQuark=c.fRejectIfNoQuark;
		if (fProngs > 0){
    		        delete [] fLabelArray;
			delete [] fPtAccCut;
			delete [] fEtaAccCut;
			fLabelArray = new Int_t[fProngs];
                        fPtAccCut = new Float_t[fProngs];
                        fEtaAccCut = new Float_t[fProngs];
			for(Int_t iP=0; iP<fProngs; iP++){
				fLabelArray[iP]=c.fLabelArray[iP];
				fPtAccCut[iP]=c.fPtAccCut[iP];
				fEtaAccCut[iP]=c.fEtaAccCut[iP];
			}
		}
		fMultiplicity=c.fMultiplicity;
		fConfiguration=c.fConfiguration;
	}
	
	return *this;
}

//____________________________________________________
AliCFVertexingHF::AliCFVertexingHF(const AliCFVertexingHF &c) :
        TObject(c),
	fmcArray(0),
	fRecoCandidate(0),
	fmcPartCandidate(0),
	fNDaughters(c.fNDaughters),
	fNVar(c.fNVar),
	fzPrimVertex(c.fzPrimVertex),
	fzMCVertex(c.fzMCVertex),
	fFillFromGenerated(c.fFillFromGenerated),
	fOriginDselection (c.fOriginDselection),
	fKeepDfromB (c.fKeepDfromB),
	fKeepDfromBOnly (c.fKeepDfromBOnly),
	fmcLabel(c.fmcLabel),
	fProngs(c.fProngs),
	fLabelArray(0x0),
	fCentValue(c.fCentValue),
	fPtAccCut(0x0),
	fEtaAccCut(0x0),
	fFakeSelection(c.fFakeSelection),
	fFake(c.fFake),
	fRejectIfNoQuark(c.fRejectIfNoQuark),	
	fMultiplicity(c.fMultiplicity),
	fConfiguration(c.fConfiguration)
{  
  //
  //copy constructor
  //
  delete fmcArray;
  fmcArray = new TClonesArray(*(c.fmcArray));
  delete fRecoCandidate;
  fRecoCandidate = new AliAODRecoDecayHF(*(c.fRecoCandidate));
  delete fmcPartCandidate;
  fmcPartCandidate = new AliAODMCParticle(*(c.fmcPartCandidate));
  if (fProngs > 0){
    delete [] fLabelArray;
    delete [] fPtAccCut;
    delete [] fEtaAccCut;
    fLabelArray = new Int_t[fProngs];
    fPtAccCut = new Float_t[fProngs];
    fEtaAccCut = new Float_t[fProngs];
    if (c.fLabelArray) memcpy(fLabelArray,c.fLabelArray,fProngs*sizeof(Int_t));
    if (c.fPtAccCut) memcpy(fPtAccCut,c.fPtAccCut,fProngs*sizeof(Int_t));
    if (c.fEtaAccCut) memcpy(fEtaAccCut,c.fEtaAccCut,fProngs*sizeof(Int_t));
  }
}

//___________________________________________________________
void AliCFVertexingHF::SetDselection(UShort_t originDselection)
{
	// setting the way the D0 will be selected
	// 0 --> only from c quarks
	// 1 --> only from b quarks
	// 2 --> from both c quarks and b quarks
		
	fOriginDselection = originDselection;
	
	if (fOriginDselection == 0) {
		fKeepDfromB = kFALSE;
		fKeepDfromBOnly = kFALSE;
	}
	
	if (fOriginDselection == 1) {
		fKeepDfromB = kTRUE;
		fKeepDfromBOnly = kTRUE;
	}
	
	if (fOriginDselection == 2) {
		fKeepDfromB = kTRUE;
		fKeepDfromBOnly = kFALSE;
	}
	
	return;	
}

//______________________________________________________
void AliCFVertexingHF::SetMCCandidateParam(Int_t label)
{
	//
	// setting the parameters (candidate and n. daughters)
	//	
	
        fmcPartCandidate = dynamic_cast <AliAODMCParticle*> (fmcArray->At(label));
	if (fmcPartCandidate){
	  fNDaughters = fmcPartCandidate->GetNDaughters();
	}
	else {
	  AliError(Form("Dynamic cast failed, fNdaughters will remain set to %d",fNDaughters));
	}
	return;
}

//____________________________________________________________
Int_t AliCFVertexingHF::MCcquarkCounting(AliAODMCParticle* mcPart) const
{
	//
	// counting the c-quarks
	// 

	Int_t cquarks = 0;
	if (mcPart) {
	  if (mcPart->GetPdgCode() == 4) cquarks++; 
	  if (mcPart->GetPdgCode() == -4) cquarks++; 
	}
	else {
		AliWarning("Particle not found in tree, skipping\n"); 
		return cquarks;
	} 
	
	return cquarks;
}

//________________________________________________________
Bool_t AliCFVertexingHF::CheckMCPartFamily(AliAODMCParticle */*mcPart*/, TClonesArray */*mcArray*/) const 
{
	// 
	//checking the family
	//

	Int_t pdgGranma = CheckOrigin();

	AliDebug(3, Form("pdgGranma = %d", pdgGranma));

	if (pdgGranma == -99999){
	  AliDebug(2, "This particle does not have a quark in his genealogy\n");
	  return kFALSE;
	}
	if (pdgGranma == -9999){
	  AliDebug(2,"This particle come from a B decay channel but according to the settings of the task, we keep only the prompt charm particles\n");	
	  return kFALSE;
	}	
	
	if (pdgGranma == -999){
	  AliDebug(2,"This particle come from a prompt charm particles but according to the settings of the task, we want only the ones coming from B\n");  
	  return kFALSE;
	}	
	
	if (!CheckMCDaughters()) {
	  AliDebug(3, "CheckMCDaughters false");
	  return kFALSE;
	}
	if (!CheckMCChannelDecay()) {
	  AliDebug(3, "CheckMCChannelDecay false");
	  return kFALSE;
	}
	return kTRUE;
}

//_________________________________________________________________________________________________
Int_t AliCFVertexingHF::CheckOrigin() const 
{		
	//
	// checking whether the mother of the particles come from a charm or a bottom quark
	//
	
	Int_t pdgGranma = 0;
	Int_t mother = 0;
	mother = fmcPartCandidate->GetMother();
	Int_t istep = 0;
	Int_t abspdgGranma =0;
	Bool_t isFromB=kFALSE;
	Bool_t isQuarkFound=kFALSE;
	while (mother >=0 ){
		istep++;
		AliDebug(2,Form("mother at step %d = %d", istep, mother));
		AliAODMCParticle* mcGranma = dynamic_cast<AliAODMCParticle*>(fmcArray->At(mother));
		if (mcGranma){
			pdgGranma = mcGranma->GetPdgCode();
			AliDebug(2,Form("Pdg mother at step %d = %d", istep, pdgGranma));
			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();
			AliDebug(3, Form("mother = %d", mother));
		}else{
			AliError("Failed casting the mother particle!");
			break;
		}
	}

	if(fRejectIfNoQuark && !isQuarkFound) {
	  return -99999;
	}
	if(isFromB){
	  if (!fKeepDfromB) {
	    return -9999; //skip particle if come from a B meson.
	  }
	}
	else{
	  if (fKeepDfromBOnly) {
	    return -999;
	  }
	}
	return pdgGranma;
}

//___________________________________________
Bool_t AliCFVertexingHF::CheckMCDaughters()const 
{
	//
	// checking the daughters
	// at MC level

	AliAODMCParticle *mcPartDaughter;
	Bool_t checkDaughters = kFALSE;
	
	Int_t label0 = fmcPartCandidate->GetDaughter(0);
	Int_t label1 = fmcPartCandidate->GetDaughter(1);
	AliDebug(3,Form("label0 = %d, label1 = %d", label0, label1));
	if (label1<=0 || label0 <= 0){
	  AliDebug(2, Form("The MC particle doesn't have correct daughters, skipping!!"));
	  return checkDaughters;  
	}
	
	if (fLabelArray == 0x0) {
	  return checkDaughters;
	}  
	
	for (Int_t iProng = 0; iProng<fProngs; iProng++){
	  AliDebug(3, Form("fLabelArray[%d] = %d", iProng, fLabelArray[iProng]));
	}
	AliDebug(3, Form("Entries in MC array = %d (fast  = %d)", fmcArray->GetEntries(), fmcArray->GetEntriesFast()));
	for (Int_t iProng = 0; iProng<fProngs; iProng++){
	  AliDebug(3, Form("fLabelArray[%d] = %d", iProng, fLabelArray[iProng]));
	  mcPartDaughter = dynamic_cast<AliAODMCParticle*>(fmcArray->At(fLabelArray[iProng]));    
	  if (!mcPartDaughter) {
	    AliWarning("At least one Daughter Particle not found in tree, skipping"); 
	    return checkDaughters;  
	  }
	}
	
	checkDaughters = kTRUE;
	return checkDaughters;
}

//______________________________________________________
Bool_t AliCFVertexingHF::FillMCContainer(Double_t *containerInputMC)
{
	//
	// fill the container for Generator level selection
	//

	Bool_t mcContainerFilled = kFALSE;  
	
	Double_t* vectorMC = new Double_t[fNVar];
	for (Int_t iVar = 0; iVar<fNVar; iVar++) vectorMC[iVar]= 9999.;
	
	if (GetGeneratedValuesFromMCParticle(&vectorMC[0])){
		for (Int_t iVar = 0; iVar<fNVar; iVar++){			
			containerInputMC[iVar] = vectorMC[iVar];
		}		
		mcContainerFilled = kTRUE;		
	}
	else {
	  AliDebug(3, "We could not fill the array for the container");
	}
	delete [] vectorMC;
	vectorMC = 0x0;
	return mcContainerFilled;	
}

//______________________________________________________
Bool_t AliCFVertexingHF::FillRecoContainer(Double_t *containerInput) 
{  
	//	
	// fill the container for Reconstrucred level selection
	//

	Bool_t recoContainerFilled = kFALSE;
	Double_t* vectorValues = new Double_t[fNVar];
	Double_t* vectorReco = new Double_t[fNVar];  
	for (Int_t iVar = 0; iVar<fNVar; iVar++) {

		vectorValues[iVar]= 9999.;
		vectorReco[iVar]=9999.;
	}
	
	if(fFillFromGenerated){
		//filled with MC values
		if (GetGeneratedValuesFromMCParticle(&vectorValues[0])){
			for (Int_t iVar = 0; iVar<fNVar; iVar++){
				containerInput[iVar] = vectorValues[iVar];
			}
			recoContainerFilled = kTRUE;		
		}
	}
	else{
		//filled with Reco values
		
		if (GetRecoValuesFromCandidate(&vectorReco[0])){
			for (Int_t iVar = 0; iVar<fNVar; iVar++){
			  containerInput[iVar] = vectorReco[iVar];
			}
			recoContainerFilled = kTRUE;		
		}
	}
	
	delete [] vectorValues;
	delete [] vectorReco;
	vectorValues = 0x0;
	vectorReco = 0x0;

	return recoContainerFilled;	
}

//_____________________________________________________
Bool_t AliCFVertexingHF::MCAcceptanceStep() const
{
	//
	// checking the MC acceptance step
	//

	Bool_t bMCAccStep = kFALSE;
	
	AliAODMCParticle *mcPartDaughter;
	Int_t label0 = fmcPartCandidate->GetDaughter(0);
	Int_t label1 = fmcPartCandidate->GetDaughter(1);
	if (label1<=0 || label0 <= 0){
		AliDebug(2, Form("The MC particle doesn't have correct daughters, skipping!!"));
		return bMCAccStep;  
	}
	
	if (fLabelArray == 0x0) {
		return bMCAccStep;
	}  

	for (Int_t iProng = 0; iProng<fProngs; iProng++){
		mcPartDaughter = dynamic_cast<AliAODMCParticle*>(fmcArray->At(fLabelArray[iProng]));    
		if (!mcPartDaughter) {
			AliWarning("At least one Daughter Particle not found in tree, skipping"); 
			return bMCAccStep;  
		}
		Double_t eta = mcPartDaughter->Eta();
		Double_t pt = mcPartDaughter->Pt();
		
		//set values of eta and pt in the constructor.
		//		if (TMath::Abs(eta) > 0.9 || pt < 0.1){
		if (TMath::Abs(eta) > fEtaAccCut[iProng] || pt < fPtAccCut[iProng]){
			AliDebug(3,Form("At least one daughter has eta or pt outside the required range (|eta| = %f, pt = %f, should be |eta| < %f, pt > %f \n", TMath::Abs(eta), pt, fEtaAccCut[iProng], fPtAccCut[iProng])); 
			return bMCAccStep;
		}
	}  
	bMCAccStep = kTRUE;
	return bMCAccStep; 
	
}
 //_____________________________________________________
Bool_t AliCFVertexingHF::MCRefitStep(AliAODEvent *aodEvent, AliESDtrackCuts **trackCuts) const
{		
	//
	// check on the kTPCrefit and kITSrefit conditions of the daughters
	//
	Bool_t bRefitStep = kFALSE;
	
	Int_t label0 = fmcPartCandidate->GetDaughter(0);
	Int_t label1 = fmcPartCandidate->GetDaughter(1);
	
	if (label1<=0 || label0 <= 0){
		AliDebug(2, Form("The MC particle doesn't have correct daughters, skipping!!"));
		return bRefitStep;  
	}
	
	if (fLabelArray == 0x0) {
		return bRefitStep;
	}  
	
	Int_t foundDaughters = 0;
	Int_t* temp = new Int_t[fProngs];
	for (Int_t ilabel = 0; ilabel<fProngs; ilabel++){
		temp[ilabel] = fLabelArray[ilabel];
	}

	//	if (trackCuts->GetRequireTPCRefit() || trackCuts->GetRequireITSRefit()){
		
	for(Int_t iaod =0; iaod<aodEvent->GetNumberOfTracks(); iaod++){
		AliAODTrack *track = (AliAODTrack*)aodEvent->GetTrack(iaod);
		if(track->GetStatus()&AliESDtrack::kITSpureSA) continue;
		Bool_t foundTrack = kFALSE;
		Int_t prongindex;
		for (Int_t ilabel = 0; ilabel<fProngs; ilabel++){
			AliDebug(3,Form("fLabelArray[%d] = %d, track->GetLabel() = %d",ilabel,fLabelArray[ilabel],TMath::Abs(track->GetLabel())));
			if ((track->GetLabel()<0)&&(fFakeSelection==1)) continue;
			if ((track->GetLabel()>0)&&(fFakeSelection==2)) continue;

			if (TMath::Abs(track->GetLabel()) == temp[ilabel]) {
				foundTrack = kTRUE;
				temp[ilabel] = 0;
				prongindex=ilabel;
				break;
			}
		}
		if (foundTrack){
			foundDaughters++;
			AliDebug(4,Form("daughter %d \n",foundDaughters));
			if(trackCuts[prongindex]->GetRequireTPCRefit()){
				if(track->GetStatus()&AliESDtrack::kTPCrefit) {
					bRefitStep = kTRUE;
				}
				else {
					AliDebug(3, "Refit cut not passed , missing TPC refit\n");
					delete [] temp;
					temp = 0x0;
					return kFALSE;
				}
			}
			
			if (trackCuts[prongindex]->GetRequireITSRefit()) {
				if(track->GetStatus()&AliESDtrack::kITSrefit){
					bRefitStep = kTRUE;
				}
				else {
					AliDebug(3, "Refit cut not passed , missing ITS refit\n");
					delete [] temp;
					temp = 0x0;
					return kFALSE;
				}
			}
		}      	
		if (foundDaughters == fProngs){				
			break;
		}			
	}    
	//} 						
	delete [] temp;
	temp = 0x0;
	if (foundDaughters== fProngs)  return bRefitStep;
	else return kFALSE;
}

//____________________________________________________________________________

Bool_t AliCFVertexingHF::RecoStep() 
{ 
	//
	//check also vertex and ITS Refit and TPC Refit
	//

	Bool_t bRecoStep = kFALSE;
	Int_t mcLabel = GetMCLabel();
	
	if (mcLabel == -1) {
		AliDebug(2,"No MC particle found");
		return bRecoStep;
	}
	else{
		fmcPartCandidate = (AliAODMCParticle*)fmcArray->At(mcLabel);
		if (!fmcPartCandidate){
			AliWarning("Could not find associated MC in AOD MC tree");
			return bRecoStep;
		}    
	}
	
	Int_t pdgGranma = CheckOrigin();
	
	if (pdgGranma == -99999){
       	        AliDebug(2,"This particle does not have a quark in his genealogy\n");
		return bRecoStep;
	}
	if (pdgGranma == -9999){
		AliDebug(2,"This particle come from a B decay channel but according to the settings of the task, we keep only prompt charm particles\n");		
		return bRecoStep;
	}

	if (pdgGranma == -999){
		AliDebug(2,"This particle come from a  prompt charm particle but according to the settings of the task, we want only the ones coming from B\n");
		return bRecoStep;
	}
   
	bRecoStep=kTRUE;
	return bRecoStep;  
}	
//____________________________________________
Double_t AliCFVertexingHF::GetEtaProng(Int_t iProng) const 
{
	//
	// getting eta of the prong
	//
	
	if (fRecoCandidate){
		Double_t etaProng = fRecoCandidate->EtaProng(iProng);  
		return etaProng;
	}
	return 999999;  
}
//______________________________________________________
Double_t AliCFVertexingHF::GetPtProng(Int_t iProng) const 
{
	//
	// getting pt of the prong
	//

	if (fRecoCandidate){
		Double_t ptProng = fRecoCandidate->PtProng(iProng);  
		return ptProng;
	}
	return 999999;  
	
}

//____________________________________________________________________

Bool_t AliCFVertexingHF::RecoAcceptStep(AliESDtrackCuts **trackCuts) const
{
	//
	// reco Acceptance step
	//
	
	Bool_t bRecoAccStep = kFALSE;
	
	Float_t etaCutMin=0, ptCutMin=0, etaCutMax=0, ptCutMax=0;
	
	Float_t etaProng=0., ptProng=0.; 
	
	for (Int_t iProng =0; iProng<fProngs; iProng++){
		
		trackCuts[iProng]->GetEtaRange(etaCutMin, etaCutMax);
		trackCuts[iProng]->GetPtRange(ptCutMin, ptCutMax);
		etaProng = GetEtaProng(iProng);
		ptProng = GetPtProng(iProng);
		
		Bool_t acceptanceProng = (etaProng>etaCutMin && etaProng<etaCutMax && ptProng>ptCutMin && ptProng<ptCutMax);
		if (!acceptanceProng) {
			AliDebug(2,"At least one reconstructed prong isn't in the acceptance\n");
			return bRecoAccStep;
		}
	}
	
	bRecoAccStep=kTRUE;
	return bRecoAccStep;
}
//___________________________________________________________

Bool_t AliCFVertexingHF::FillUnfoldingMatrix(UInt_t pdg, Double_t fill[4]) const
{
	//
	// filling the unfolding matrix
	//
	
	if(fmcPartCandidate){
		
		fill[0] = GetPtCand();
		fill[1] = GetYCand(pdg);
		
		fill[2] =  fmcPartCandidate->Pt(); 
		fill[3] =  fmcPartCandidate->Y(); 
		
		return kTRUE;
	}
	
	return kFALSE;
}
//___________________________________________________________

Int_t AliCFVertexingHF::CheckReflexion(Char_t isSign)
{
	//
	// check for reflexion (particle/antiparticle)
	//

	Int_t mcLabel = GetMCLabel();
	
	if (mcLabel == -1) {
		AliDebug(2,"No MC particle found");
		return 0;
	}
	else{
		fmcPartCandidate = (AliAODMCParticle*)fmcArray->At(mcLabel);
		if (!fmcPartCandidate){
			AliWarning("Could not find associated MC in AOD MC tree");
			return 0;
		}    
	}
	
	if(fmcPartCandidate->GetPdgCode()>0) {
		if (isSign == 1){ // I ask for antiparticle only
			AliDebug(2,"candidate is particle, I ask for antiparticle only");
			return 0;
		}
		return 1;  // particle
	}
	else if(fmcPartCandidate->GetPdgCode()<0) {
		if (isSign == 0){ // I ask for particle only
			AliDebug(2,"candidate is antiparticle, I ask for particle only");
			return 0;
		}
		return 2;  // antiparticle
	}
	else return 0;  // ....shouldn't be...

}
//___________________________________________________________

Bool_t AliCFVertexingHF::SetLabelArray()
{
	//
	// setting the label arrays
	//

	Bool_t bLabelArray = kFALSE;

	fLabelArray = new Int_t[fProngs];

	AliAODMCParticle *mcPartDaughter;
	Int_t label0 = fmcPartCandidate->GetDaughter(0);
	Int_t label1 = fmcPartCandidate->GetDaughter(1);
 	AliDebug(2, Form("label0 = %d, label1 = %d", label0, label1));
	if (label1<=0 || label0 <= 0){
	        AliDebug(2, Form("The MC particle doesn't have correct daughters, skipping!!"));
		delete [] fLabelArray; 
		fLabelArray = 0x0;  
		return bLabelArray;
	}
	AliAODMCParticle* tmp0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(label0));
	AliAODMCParticle* tmp1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(label1));
	AliDebug(2, Form("label0 = %d (pdg = %d), label1 = %d (pdg = %d)", label0, tmp0->GetPdgCode(), label1, tmp1->GetPdgCode()));
	
	if (label1 - label0 == fProngs-1){
		for (Int_t iProng = 0; iProng<fProngs; iProng++){
			mcPartDaughter = dynamic_cast<AliAODMCParticle*>(fmcArray->At(label0+iProng));    
			if (mcPartDaughter){
				fLabelArray[iProng] =  mcPartDaughter->GetLabel();
			}
			else{
				AliError("Failed casting the daughter particle, returning a NULL label array");
				delete [] fLabelArray; 
				fLabelArray = 0x0;  
				return bLabelArray;
			}
		}

	}
	// resonant decay channel
	else if (label1 - label0 == fProngs-2 && fProngs > 2){
	  AliDebug(3, "In the resonance decay channel");
		Int_t labelFirstDau = fmcPartCandidate->GetDaughter(0);
		Int_t foundDaughters = 0;
		for(Int_t iDau=0; iDau<fProngs-1; iDau++){
			Int_t iLabelDau = labelFirstDau+iDau;
			AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(fmcArray->At(iLabelDau));
                        if ( ! part ) {
                          AliError("Wrong particle type in fmcArray");
			  delete [] fLabelArray; 
			  fLabelArray = 0x0; 
                          return bLabelArray;
                        }  
			Int_t pdgCode=TMath::Abs(part->GetPdgCode());
			AliDebug(3, Form("Prong %d had pdg = %d", iDau, pdgCode));
			if(pdgCode==211 || pdgCode==321 || pdgCode==2212){
				if (part) {
					fLabelArray[foundDaughters] = part->GetLabel();
					AliDebug(3, Form("part found at %d has label = %d", iLabelDau, part->GetLabel()));
					AliDebug(3, Form("fLabelArray[%d] = %d", foundDaughters, fLabelArray[foundDaughters]));
					foundDaughters++;
				}
				else{
					AliError("Error while casting particle! returning a NULL array");
					delete [] fLabelArray; 
					fLabelArray = 0x0;  
					return bLabelArray;
				}
			}
			// added K0S case - Start
			else if (pdgCode==311) {
			  AliDebug(3, Form("K0S case, foundDaughters = %d", foundDaughters));
			  if (part->GetNDaughters()!=1) {
			    delete [] fLabelArray; 
			    fLabelArray = 0x0;  
			    return bLabelArray;
			  }
			  Int_t labelK0Dau = part->GetDaughter(0);
			  AliAODMCParticle* partK0S = dynamic_cast<AliAODMCParticle*>(fmcArray->At(labelK0Dau));
			  if(!partK0S){
			    AliError("Error while casting particle! returning a NULL array");
			    delete [] fLabelArray;
			    fLabelArray = 0x0;
			    return bLabelArray;
			  }		    
			  Int_t nDauRes = partK0S->GetNDaughters();
			  AliDebug(3, Form("nDauRes = %d", nDauRes));
			  if (nDauRes!=2 || partK0S->GetPdgCode() != 310) {
			    AliDebug(2, "No K0S on no 2-body decay");
			    delete [] fLabelArray;
			    fLabelArray = 0x0;
			    return bLabelArray;
			  }
			  Int_t labelFirstDauRes = partK0S->GetDaughter(0);
			  AliDebug(2, Form("Found K0S (%d)", labelK0Dau));
			  for(Int_t iDauRes=0; iDauRes<nDauRes; iDauRes++){
			    Int_t iLabelDauRes = labelFirstDauRes+iDauRes;
			    AliAODMCParticle* dauRes = dynamic_cast<AliAODMCParticle*>(fmcArray->At(iLabelDauRes));
			    AliDebug(3, Form("daughter = %d, pointer = %p, with label = %d", iLabelDauRes, dauRes, dauRes->GetLabel()));
			    if (dauRes){
			      AliDebug(3, Form("PDG code = %d", dauRes->GetPdgCode()));
			      if (TMath::Abs(dauRes->GetPdgCode())!=211) {
				AliDebug(2,"K0S doesn't decay in 2 charged pions!");
				delete [] fLabelArray; 
				fLabelArray = 0x0;  
				return bLabelArray;
			      }
			      else {
				fLabelArray[foundDaughters] = iLabelDauRes;  // N.B.: do not use dauRes->GetLabel()!!!! it is wrong!!!
				AliDebug(3, Form("Setting fLabelArray[%d] = %d (before it was %d)", foundDaughters, iLabelDauRes, dauRes->GetLabel()));
				foundDaughters++;
			      }
			    }
			    else {
			      AliError("Error while casting resonant daughter! returning a NULL array");
			      delete [] fLabelArray; 
			      fLabelArray = 0x0;  
			      return bLabelArray;
			    }
			  }
			}
			// added K0S case - End
			else{
			  Int_t nDauRes=part->GetNDaughters();
			  AliDebug(3, Form("nDauRes = %d", nDauRes));
			  if(nDauRes!=2) {
			    AliDebug(3, Form("nDauRes = %d, different from 2", nDauRes));
			    Int_t labelFirstDauResTest = part->GetDaughter(0);
			    for(Int_t iDauRes=0; iDauRes<nDauRes; iDauRes++){
			      Int_t iLabelDauResTest = labelFirstDauResTest+iDauRes;
			      AliAODMCParticle* dauRes = dynamic_cast<AliAODMCParticle*>(fmcArray->At(iLabelDauResTest));
			      if (dauRes){
				AliDebug(3, Form("pdg of daugh %d = %d", iDauRes, dauRes->GetPdgCode()));
			      }
			    }
			    delete [] fLabelArray; 
			    fLabelArray = 0x0;  
			    return bLabelArray;			    
			  }
			  Int_t labelFirstDauRes = part->GetDaughter(0); 
			  for(Int_t iDauRes=0; iDauRes<nDauRes; iDauRes++){
			    Int_t iLabelDauRes = labelFirstDauRes+iDauRes;
			    AliAODMCParticle* dauRes = dynamic_cast<AliAODMCParticle*>(fmcArray->At(iLabelDauRes));
			    if (dauRes){
			      fLabelArray[foundDaughters] = dauRes->GetLabel();
			      foundDaughters++;
			    }
			    else{
			      AliError("Error while casting resonant daughter! returning a NULL array");
			      delete [] fLabelArray; 
			      fLabelArray = 0x0;  
			      return bLabelArray;
			    }
			  }
			}
		}
		if (foundDaughters != fProngs){
		  AliDebug(3, Form("foundDaughters (%d) != fProngs (%d)", foundDaughters, fProngs));
		  delete [] fLabelArray; 
		  fLabelArray = 0x0;  
		  return bLabelArray;
		}
	}
	// wrong correspondance label <--> prongs
	else{
	  delete [] fLabelArray; 
	  fLabelArray = 0x0;  
	  return bLabelArray;
	}
        AliDebug(3, "Setting AccCuts");
        SetAccCut();   // setting the pt and eta acceptance cuts
        bLabelArray = kTRUE;
        return bLabelArray;
}

//___________________________________________________________

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

	if (fProngs>0){
		for (Int_t iP=0; iP<fProngs; iP++){
			fPtAccCut[iP]=ptAccCut[iP];
		}
	}
	return;
}		



//___________________________________________________________

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

	if (fProngs>0){
		for (Int_t iP=0; iP<fProngs; iP++){
			fEtaAccCut[iP]=etaAccCut[iP];
		}
	}
	return;
}	
//___________________________________________________________

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

	if (fProngs>0){
		for (Int_t iP=0; iP<fProngs; iP++){
			fPtAccCut[iP]=ptAccCut[iP];
			fEtaAccCut[iP]=etaAccCut[iP];
		}
	}
	return;
}		

//___________________________________________________________

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

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