ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2011, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Class to compute variables for correction framework           //  
// for 3-body decays of D mesons (D+, Ds, Lc)                    //
// in bins of cut variables                                      //
// Origin:       Francesco Prino (prino@to.infn.it)              //
//               Renu Bala       (bala@to.infn.it)               //
//               Davide Caffarri (cafarri@pd.infn.it)            //
///////////////////////////////////////////////////////////////////

#include "AliAODMCParticle.h"
#include "AliAODEvent.h"
#include "TClonesArray.h"
#include "AliCFVertexingHF.h"
#include "AliESDtrack.h"
#include "TDatabasePDG.h"

#include "AliCFVertexingHF3Prong.h"
#include "AliCFContainer.h"
#include "AliCFTaskVertexingHF.h"

ClassImp(AliCFVertexingHF3Prong)

//_________________________________________
AliCFVertexingHF3Prong::AliCFVertexingHF3Prong(Int_t decay, UInt_t resonantDecay):
AliCFVertexingHF(),
  fDecay(decay),
  fGenDsOption(kCountResonant),
  fResonantDecay(resonantDecay)
 {
  // 
  SetNProngs(3);

  fPtAccCut=new Float_t[fProngs];
  fEtaAccCut=new Float_t[fProngs];
  for(Int_t iP=0; iP<fProngs; iP++){
	  fPtAccCut[iP]=0.1;
	  fEtaAccCut[iP]=0.9;
  }

}
//_________________________________________
AliCFVertexingHF3Prong::AliCFVertexingHF3Prong(Int_t decay):
AliCFVertexingHF(),
  fDecay(decay),
  fGenDsOption(kCountResonant),
  fResonantDecay(0)
 {
  //
  SetNProngs(3);

  fPtAccCut=new Float_t[fProngs];
  fEtaAccCut=new Float_t[fProngs];
  for(Int_t iP=0; iP<fProngs; iP++){
          fPtAccCut[iP]=0.1;
          fEtaAccCut[iP]=0.9;
  }

}
//_________________________________________
AliCFVertexingHF3Prong::AliCFVertexingHF3Prong(TClonesArray *mcArray, UShort_t originDselection, Int_t decay, UInt_t resonantDecay):
  AliCFVertexingHF(mcArray, originDselection),
  fDecay(decay),
  fGenDsOption(kCountResonant),
  fResonantDecay(resonantDecay)
{
  //
  SetNProngs(3);
  fPtAccCut=new Float_t[fProngs];
  fEtaAccCut=new Float_t[fProngs];
  for(Int_t iP=0; iP<fProngs; iP++){
	  fPtAccCut[iP]=0.1;
	  fEtaAccCut[iP]=0.9;
  }
}

//_________________________________________
AliCFVertexingHF3Prong::AliCFVertexingHF3Prong(TClonesArray *mcArray, UShort_t originDselection, Int_t decay):
  AliCFVertexingHF(mcArray, originDselection),
  fDecay(decay),
  fGenDsOption(kCountResonant),
  fResonantDecay(0)
{
  //
  SetNProngs(3);
  fPtAccCut=new Float_t[fProngs];
  fEtaAccCut=new Float_t[fProngs];
  for(Int_t iP=0; iP<fProngs; iP++){
          fPtAccCut[iP]=0.1;
          fEtaAccCut[iP]=0.9;
  }
}
//_____________________________________
AliCFVertexingHF3Prong& AliCFVertexingHF3Prong::operator=(const AliCFVertexingHF3Prong& c){
  //
  if  (this != &c) {

    AliCFVertexingHF::operator=(c);
   
  }
    return *this;
}

//__________________________________________
Bool_t AliCFVertexingHF3Prong::SetRecoCandidateParam(AliAODRecoDecayHF *recoCand){
  // Checks if candidate is signal and D meson is present in MC array
  
  Bool_t bSignAssoc = kFALSE;
  fRecoCandidate = recoCand;

  if (!fRecoCandidate) {
    AliError("fRecoCandidate not found, problem in assignement\n");
    return bSignAssoc;
  }
  
  Int_t pdgCand = -1;
  Int_t pdgDaughter[3]={-1,-1,-1};
  if(fDecay==kDplustoKpipi){
    pdgCand=411;
    pdgDaughter[0]=321;
    pdgDaughter[1]=211;
    pdgDaughter[2]=211;
  }else if(fDecay==kDstoKKpi){
    pdgCand=431;
    pdgDaughter[0]=321;
    pdgDaughter[1]=321;
    pdgDaughter[2]=211;
  }else if(fDecay==kLctopKpi){
	  pdgCand=4122;
	  pdgDaughter[0]=2212;
	  pdgDaughter[1]=321;
	  pdgDaughter[2]=211;	  
  }else{
    AliError("WRONG DECAY SETTING");
    return bSignAssoc;    
  }

  Int_t mcLabel = fRecoCandidate->MatchToMC(pdgCand,fmcArray,3,pdgDaughter);  
  if (mcLabel == -1) return bSignAssoc;

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

  if(fDecay==kDstoKKpi && fGenDsOption!=kCountAllDsKKpi){
    if(!CheckMCChannelDecay()){
      AliDebug(3,"Ds not from the selected resonant channel");
      return bSignAssoc;
    }
  }

  if (fDecay==kLctopKpi && fResonantDecay != AliCFTaskVertexingHF::kAll) {
    if (!CheckLc3Prong()) return bSignAssoc;
  }

  bSignAssoc = kTRUE;
  return bSignAssoc;
}

//______________________________________________
Bool_t AliCFVertexingHF3Prong::GetGeneratedValuesFromMCParticle(Double_t* vectorMC) {
	// 
	// collecting all the necessary info from MC particle and fill vectorMC: 12 variables
	// pt_D
	// y_D
	// phi_D
	// ctau
	// cos point
	// pt_1
	// pt_2
	// pt_3
	// d0_1
	// d0_2
	// d0_3
	// zPrimVert
	// centrality
	
	Bool_t bGenValues = kFALSE;
	
	Int_t pdgCand = -1;
	if(fDecay==kDplustoKpipi){
		pdgCand=411;
	}else if(fDecay==kDstoKKpi){
		pdgCand=431;
	}else if(fDecay==kLctopKpi){
		pdgCand=4122;
	}else{
		AliError("WRONG DECAY SETTING");
		return bGenValues;
	}
	
	Double_t vertD[3] = {0,0,0};   // D origin
	fmcPartCandidate->XvYvZv(vertD);  // cm
	
	Int_t nprongs = 3;
	Int_t daughter[3];
	Short_t charge = fmcPartCandidate->Charge();
	
	// order the daughters as LS,OS,LS, e.g. D+ -> pi+ K- pi+
	// the 2 LS are ordered so that in pos. 0 there is the one with lower label value
	Int_t index=0;
	Int_t nDauLS=0;
	Int_t nDauOS=0;
	
	
	Int_t nDau=fmcPartCandidate->GetNDaughters();
	Int_t labelFirstDau = fmcPartCandidate->GetDaughter(0); 
	if(nDau==3){
		for(Int_t iDau=0; iDau<3; iDau++){
			Int_t ind = labelFirstDau+iDau;
			AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(fmcArray->At(ind));
			if(!part){
				AliError("Daughter particle not found in MC array");
				return bGenValues;
			}
			Short_t signDau=part->Charge();
			if(signDau==charge){
				nDauLS++;
				daughter[index] = ind;
				index=2;
			}else{
				daughter[1] = ind;
				nDauOS++;
			}
		}
	}else if(nDau==2){
		for(Int_t iDau=0; iDau<2; iDau++){
			Int_t ind = labelFirstDau+iDau;
			AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(fmcArray->At(ind));
			if(!part){
				AliError("Daughter particle not found in MC array");
				return bGenValues;
			}
			Int_t pdgCode=TMath::Abs(part->GetPdgCode());
			if(pdgCode==211 || pdgCode==321 || pdgCode==2212){
				Short_t signDau=part->Charge();
				if(signDau==charge){
					nDauLS++;
					daughter[index] = ind;
					index=2;
				}else{
					daughter[1] = ind;
					nDauOS++;
				}
			}else{
				Int_t nDauRes=part->GetNDaughters();
				if(nDauRes!=2){
					AliError("Wrong resonant decay");
					return bGenValues;
				}
				Int_t labelFirstDauRes = part->GetDaughter(0); 	
				for(Int_t iDauRes=0; iDauRes<2; iDauRes++){
					Int_t indDR = labelFirstDauRes+iDauRes;
					AliAODMCParticle* partDR = dynamic_cast<AliAODMCParticle*>(fmcArray->At(indDR));
					if(!partDR){
						AliError("Daughter particle not found in MC array");
						return bGenValues;
					}
					Short_t signDau=partDR->Charge();
					if(signDau==charge){
						nDauLS++;
						daughter[index] = ind;
						index=2;
					}else{
						daughter[1] = ind;
						nDauOS++;
					}
				}
			}
		}
	}else{
		AliError(Form("Wrong number of daughters %d",nDau));
		return bGenValues;
	}
	
	if(nDauLS!=2 || nDauOS!=1){
		AliError(Form("Wrong decay channel: LS and OS daughters not OK: %d %d",nDauLS,nDauOS));
		return bGenValues;
	}
	if(daughter[0]>daughter[2]){
		Int_t tmp=daughter[0];
		daughter[0]=daughter[2];
		daughter[2]=tmp;
	}
	
	// getting the momentum from the daughters and decay vertex
	Double_t px[3],py[3],pz[3],pt[3];
	Double_t vertDec[3] = {0,0,0};   // decay vertex		
	for(Int_t iDau=0; iDau<3; iDau++){
		AliAODMCParticle* part=dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter[iDau]));
		if(!part){
			AliError("Daughter particle not found in MC array");
			return bGenValues;
		}
		px[iDau]=part->Px();
		py[iDau]=part->Py();
		pz[iDau]=part->Pz();
		pt[iDau]=part->Pt();
		if(iDau==0) part->XvYvZv(vertDec);
	}
	
	Double_t d0[3] = {0.,0.,0.}; // dummy values!!!!
	
	AliAODRecoDecayHF* decay = new AliAODRecoDecayHF(vertD,vertDec,nprongs,charge,px,py,pz,d0);
	Double_t cT = decay->Ct(pdgCand);
	
	switch (fConfiguration){
	case AliCFTaskVertexingHF::kSnail:
		vectorMC[0] = fmcPartCandidate->Pt();
		vectorMC[1] = fmcPartCandidate->Y() ;
		vectorMC[2] = fmcPartCandidate->Phi();
		vectorMC[3] = cT*1.E4 ;  // in micron
		vectorMC[4] = 1.01;    // cos pointing angle, dummy value, meaningless in MC
		vectorMC[5] = pt[0];
		vectorMC[6] = pt[1];
		vectorMC[7] = pt[2];
		vectorMC[8] = fzMCVertex;    // z of reconstructed of primary vertex
		vectorMC[9] = fCentValue; // reconstructed centrality value 
		vectorMC[10] = 1.;           // fake: always filling with 1 at MC level 
		vectorMC[11] = 1.01; // dummy value for cosPointingXY  multiplicity
		vectorMC[12] = 0.; // dummy value for NormalizedDecayLengthXY multiplicity
		vectorMC[13] = fMultiplicity; // reconstructed multiplicity
		
		if (fDecay==kLctopKpi){
			vectorMC[11] = 0.; //dist12
			vectorMC[12] = 0.; //dist23
			vectorMC[13] = 0.; //sigmaVtx
			vectorMC[14] = 0.; //sumd02
			vectorMC[15] = 1.01; // dummy value for cosPointingXY  multiplicity
			vectorMC[16] = 0.; // dummy value for NormalizedDecayLengthXY multiplicity
			vectorMC[17] = fMultiplicity; // reconstructed multiplicity
		}
		break;
		
	case AliCFTaskVertexingHF::kCheetah:
		vectorMC[0] = fmcPartCandidate->Pt();
		vectorMC[1] = fmcPartCandidate->Y() ;
		vectorMC[2] = cT*1.E4; // in micron
		vectorMC[3] = fmcPartCandidate->Phi();
		vectorMC[4] = fzMCVertex;
		vectorMC[5] = fCentValue;   // dummy value for dca, meaningless in MC
		vectorMC[6] = 1. ;  // fake: always filling with 1 at MC level 
		vectorMC[7] = fMultiplicity;   // dummy value for d0pi, meaningless in MC, in micron
		break;
	}
	delete decay;	
	bGenValues = kTRUE;
	return bGenValues;
}


//____________________________________________
Bool_t AliCFVertexingHF3Prong::GetRecoValuesFromCandidate(Double_t *vectorReco) const
{ 
	// Fill vector (see above) with reconstructed quantities
	Bool_t bFillRecoValues=kFALSE;
	
	Int_t pdgCand = -1;
	if(fDecay==kDplustoKpipi){
		pdgCand=411;
	}else if(fDecay==kDstoKKpi){
		pdgCand=431;
	}else if(fDecay==kLctopKpi){
		pdgCand=4122;
		// AliError("LambdaC not yet implemented");
		// return bFillRecoValues;
	}else{
		AliError("WRONG DECAY SETTING");
		return bFillRecoValues;
	}
	
	AliAODRecoDecayHF3Prong *decay3 = (AliAODRecoDecayHF3Prong*)fRecoCandidate;
	Short_t charge=decay3->Charge();
	Double_t rapidity=decay3->Y(pdgCand);
	Double_t cT=decay3->Ct(pdgCand); 
	Double_t pt = decay3->Pt();
	Double_t cosPointingAngle = decay3->CosPointingAngle();
	Double_t phi = decay3->Phi();
	Double_t dist12= decay3->GetDist12toPrim();
	Double_t dist23 = decay3->GetDist23toPrim();
	Double_t sigmVert = decay3->GetSigmaVert();
	Double_t cosPointingAngleXY = decay3->CosPointingAngleXY();
	Double_t normDecayLengthXY = decay3->NormalizedDecayLengthXY();
		
	Int_t daughtSorted[3];
	Int_t tmpIndex=0;
	Int_t nDauLS=0;
	Int_t nDauOS=0;
	for(Int_t iDau=0; iDau<3; iDau++){
		AliAODTrack *trk = (AliAODTrack*)decay3->GetDaughter(iDau);
		Int_t label = TMath::Abs(trk->GetLabel());
		Short_t chargedau=trk->Charge();
		if(chargedau==charge){
			daughtSorted[tmpIndex]=label;
			tmpIndex=2;
			nDauLS++;
		}else{
			daughtSorted[1]=label;
			nDauOS++;
		}
	}
	
	if(nDauLS!=2 || nDauOS!=1){
		AliError("Wrong decay channel: number of OS and LS tracks not OK");
		return bFillRecoValues;
	}
	
	if(daughtSorted[0]>daughtSorted[2]){
		Int_t tmp=daughtSorted[0];
		daughtSorted[0]=daughtSorted[2];
		daughtSorted[2]=tmp;
	}
	
	Double_t d0prong0 = decay3->Getd0Prong(daughtSorted[0]);
	Double_t d0prong1 = decay3->Getd0Prong(daughtSorted[1]);
	Double_t d0prong2 = decay3->Getd0Prong(daughtSorted[2]);
	
	switch (fConfiguration){
	case AliCFTaskVertexingHF::kSnail:
		vectorReco[0] = pt;
		vectorReco[1] = rapidity;
		vectorReco[2] = phi;
		vectorReco[3] = cT*1.E4;  // in micron
		vectorReco[4] = cosPointingAngle;  // in micron
		vectorReco[5] = decay3->PtProng(daughtSorted[0]);
		vectorReco[6] = decay3->PtProng(daughtSorted[1]);
		vectorReco[7] = decay3->PtProng(daughtSorted[2]);
		vectorReco[8] = fzPrimVertex;    // z of reconstructed of primary vertex
		vectorReco[9] = fCentValue; //reconstructed centrality value
		vectorReco[10] = fFake;      // whether the reconstructed candidate was a fake (fFake = 0) or not (fFake = 2) 
		vectorReco[11] = cosPointingAngleXY; 
		vectorReco[12] = normDecayLengthXY; // in cm
		vectorReco[13] = fMultiplicity; // reconstructed multiplicity
		
		if(fDecay==kLctopKpi){  
			Double_t sumd02 =(d0prong0*d0prong0 + d0prong1*d0prong1 + d0prong2*d0prong2); 
			vectorReco[11] = dist12*1.E4;
			vectorReco[12] = dist23*1.E4;
			vectorReco[13] = sigmVert*1.E4;
			vectorReco[14] = sumd02*1.E8;
			vectorReco[15] = cosPointingAngleXY; 
			vectorReco[16] = normDecayLengthXY; // in cm
			vectorReco[17] = fMultiplicity; // reconstructed multiplicity
		}
		break;
	case AliCFTaskVertexingHF::kCheetah:
		vectorReco[0] = pt;
		vectorReco[1] = rapidity ;
		vectorReco[2] = cT*1.E4; // in micron
		vectorReco[3] = phi; 
		vectorReco[4] = fzPrimVertex;
		vectorReco[5] = fCentValue;   
		vectorReco[6] = fFake ; 
		vectorReco[7] = fMultiplicity;  
		break;
	}

	bFillRecoValues = kTRUE;
	return bFillRecoValues;
}


//_____________________________________________________________
Bool_t AliCFVertexingHF3Prong::CheckMCChannelDecay() const
{ 
  // Check the pdg codes of the daughters
  Bool_t checkCD = kFALSE;

  Int_t pdgCand = -1;
  Int_t pdgDaughter[3]={-1,-1,-1};
  if(fDecay==kDplustoKpipi){
    pdgCand=411;
    pdgDaughter[0]=321;
    pdgDaughter[1]=211;
    pdgDaughter[2]=211;
  }else if(fDecay==kDstoKKpi){
    pdgCand=431;
    pdgDaughter[0]=321;
    pdgDaughter[1]=321;
    pdgDaughter[2]=211;
  }else if(fDecay==kLctopKpi){
	  pdgCand=4122;
	  pdgDaughter[0]=2212;
	  pdgDaughter[1]=321;
	  pdgDaughter[2]=211;
	  
  //  AliError("LambdaC not yet implemented");
  //  return checkCD;
  }else{
    AliError("WRONG DECAY SETTING");
    return checkCD;    
  }


  Int_t daughter[3];
  Double_t sumPxDau=0.;
  Double_t sumPyDau=0.;
  Double_t sumPzDau=0.;

  Int_t nDau=fmcPartCandidate->GetNDaughters();
  Int_t labelFirstDau = fmcPartCandidate->GetDaughter(0);

  if(fDecay==kLctopKpi && fResonantDecay!=AliCFTaskVertexingHF::kAll){if(!CheckLc3Prong()) return checkCD;}
 
  if(nDau==3){
    if(fDecay==kDstoKKpi && !(fGenDsOption==kCountAllDsKKpi || fGenDsOption==kCountNonResonant)){
      AliDebug(3,"Decay channel in direct KKpi, should be skipped");
      return checkCD;
    }
    for(Int_t iDau=0; iDau<3; iDau++){
      Int_t ind = labelFirstDau+iDau;
      AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(fmcArray->At(ind));
      if(!part){
	AliError("Daughter particle not found in MC array");
	return checkCD;
      }
      daughter[iDau]=TMath::Abs(part->GetPdgCode());
      sumPxDau+=part->Px();
      sumPyDau+=part->Py();
      sumPzDau+=part->Pz();
    }
  }else if(nDau==2){
    if(fDecay==kDstoKKpi && fGenDsOption==kCountNonResonant) return checkCD;
    Int_t nDauFound=0;
    for(Int_t iDau=0; iDau<2; iDau++){
      Int_t ind = labelFirstDau+iDau;
      AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(fmcArray->At(ind));
      if(!part){
	AliError("Daughter particle not found in MC array");
	return checkCD;
      }
      Int_t pdgCode=TMath::Abs(part->GetPdgCode());
      if(pdgCode==211 || pdgCode==321 || pdgCode==2212){
	if(nDauFound>=3) return checkCD;
	daughter[nDauFound]=pdgCode;
	sumPxDau+=part->Px();
	sumPyDau+=part->Py();
	sumPzDau+=part->Pz();
	nDauFound++;
      }else{
	if(fDecay==kDstoKKpi && fGenDsOption!=3){
	  Int_t pdgCodeRes=TMath::Abs(part->GetPdgCode());
	  if(fGenDsOption==kCountPhipi && pdgCodeRes!=333) return checkCD;
	  else if(fGenDsOption==kCountK0stK && pdgCodeRes!=313) return checkCD;
	}
	Int_t nDauRes=part->GetNDaughters();
	if(nDauRes!=2) return checkCD;
	Int_t labelFirstDauRes = part->GetDaughter(0); 	
	for(Int_t iDauRes=0; iDauRes<2; iDauRes++){
	  Int_t indDR = labelFirstDauRes+iDauRes;
	  AliAODMCParticle* partDR = dynamic_cast<AliAODMCParticle*>(fmcArray->At(indDR));
	  if(!partDR){
	    AliError("Daughter particle not found in MC array");
	    return checkCD;
	  }
	  Int_t pdgCodeDR=TMath::Abs(partDR->GetPdgCode());
	  if(nDauFound>=3) return checkCD;
	  daughter[nDauFound]=pdgCodeDR;
	  sumPxDau+=partDR->Px();
	  sumPyDau+=partDR->Py();
	  sumPzDau+=partDR->Pz();
	  nDauFound++;
	}
      }
    }
  }else{
    return checkCD;
  }
  for(Int_t iDau1=0; iDau1<3; iDau1++){
    for(Int_t iDau2=iDau1; iDau2<3; iDau2++){
      if(daughter[iDau1]<daughter[iDau2]){
	Int_t tmp=daughter[iDau1];
	daughter[iDau1]=daughter[iDau2];
	daughter[iDau2]=tmp;
      }
    }
  }
  for(Int_t iDau=0; iDau<3; iDau++){
    if(daughter[iDau]!=pdgDaughter[iDau]){
      AliDebug(2, "Wrong decay channel from MC, skipping!!");
      return checkCD;  
    }
  }
  
  Double_t pxMother=fmcPartCandidate->Px();
  Double_t pyMother=fmcPartCandidate->Py();
  Double_t pzMother=fmcPartCandidate->Pz();
  if(TMath::Abs(pxMother-sumPxDau)/(TMath::Abs(pxMother)+1.e-13)>0.00001 ||
     TMath::Abs(pyMother-sumPyDau)/(TMath::Abs(pyMother)+1.e-13)>0.00001 ||
     TMath::Abs(pzMother-sumPzDau)/(TMath::Abs(pzMother)+1.e-13)>0.00001){
    AliDebug(2, "Momentum conservation violated, skipping!!");
    return checkCD;  
  }

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