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.                  *
 **************************************************************************/

//-----------------------------------------------------------------------
// 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 "AliAODRecoDecayHF2Prong.h"
#include "AliAODMCParticle.h"
#include "AliAODEvent.h"
#include "TClonesArray.h"
#include "AliCFVertexingHF.h"
#include "AliESDtrack.h"
#include "TDatabasePDG.h"

#include "AliCFVertexingHF2Prong.h"
#include "AliCFContainer.h"
#include "AliCFTaskVertexingHF.h"

ClassImp(AliCFVertexingHF2Prong)


//_________________________________________
  AliCFVertexingHF2Prong::AliCFVertexingHF2Prong(TClonesArray *mcArray, UShort_t originDselection):
	  AliCFVertexingHF(mcArray, originDselection)
{	
	//
	// constructor
	//

	SetNProngs(2);
	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;
	}

}


//_____________________________________
AliCFVertexingHF2Prong& AliCFVertexingHF2Prong::operator=(const AliCFVertexingHF2Prong& c)
{
	//
	// copy constructor	
	//

	if  (this != &c) {		
		AliCFVertexingHF::operator=(c);		
	}
	return *this;
}

//__________________________________________
Bool_t AliCFVertexingHF2Prong::SetRecoCandidateParam(AliAODRecoDecayHF *recoCand)
{  
	//
	// setting the recontructed candidate
	//
	
	Bool_t bSignAssoc = kFALSE;	
	fRecoCandidate = recoCand;
	if (!fRecoCandidate) {
		AliError("fRecoCandidate not found, problem in assignement\n");
		return bSignAssoc;
	}
	
	if (fRecoCandidate->GetPrimaryVtx()) AliDebug(3,"fReco Candidate has a pointer to PrimVtx\n");
	if (recoCand->GetPrimaryVtx()) AliDebug(3,"Reco Cand has a pointer to PrimVtx\n");
	
	Int_t pdgCand = 421;
	Int_t pdgDgD0toKpi[2]={321,211};
	Int_t nentries = fmcArray->GetEntriesFast();	

	AliDebug(3,Form("nentries = %d\n", nentries));
 
	Int_t mcLabel = fRecoCandidate->MatchToMC(pdgCand,fmcArray,2,pdgDgD0toKpi);
	if (mcLabel == -1) return bSignAssoc;

	if (fRecoCandidate->NumberOfFakeDaughters()>0){
		fFake = 0;    // fake candidate
		if (fFakeSelection==1) return bSignAssoc;
	}
	if (fRecoCandidate->NumberOfFakeDaughters()==0){
		fFake = 2;    // non-fake candidate
		if (fFakeSelection==2) return bSignAssoc;
	}

	SetMCLabel(mcLabel);
	fmcPartCandidate = dynamic_cast<AliAODMCParticle*>(fmcArray->At(fmcLabel));
	if (!fmcPartCandidate){
		AliDebug(3,"No part candidate");
		return bSignAssoc;
	}	
	bSignAssoc = kTRUE;
	return bSignAssoc;
}

//______________________________________________
Bool_t AliCFVertexingHF2Prong::GetGeneratedValuesFromMCParticle(Double_t* vectorMC) 
{
	// 
	// collecting all the necessary info (pt, y, cosThetaStar, ptPi, ptKa, cT) from MC particle
	//
	
	Bool_t bGenValues = kFALSE;
	Double_t vtx1[3] = {0,0,0};   // primary vertex		
	Double_t vtx2daughter0[3] = {0,0,0};   // secondary vertex from daughter 0
	Double_t vtx2daughter1[3] = {0,0,0};   // secondary vertex from daughter 1
	fmcPartCandidate->XvYvZv(vtx1);  // cm

	Int_t daughter0 = fmcPartCandidate->GetDaughter(0);
	Int_t daughter1 = fmcPartCandidate->GetDaughter(1);
	AliAODMCParticle* mcPartDaughter0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter0));
	AliAODMCParticle* mcPartDaughter1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter1));
	if(!mcPartDaughter0 || !mcPartDaughter1) return bGenValues;

	// getting vertex from daughters
	mcPartDaughter0->XvYvZv(vtx2daughter0);  // cm
	mcPartDaughter1->XvYvZv(vtx2daughter1);  //cm
	if (TMath::Abs(vtx2daughter0[0] - vtx2daughter1[0]) > 1E-5 || TMath::Abs(vtx2daughter0[1] - vtx2daughter1[1]) > 1E-5 || TMath::Abs(vtx2daughter0[2] - vtx2daughter1[2])>1E-5) {
		AliError("Daughters have different secondary vertex, skipping the track");
		return bGenValues;
	}
	
	Int_t nprongs = 2;
	Short_t charge = 0;
	// always instantiate the AliAODRecoDecay with the positive daughter first, the negative second
	AliAODMCParticle* positiveDaugh = mcPartDaughter0;
	AliAODMCParticle* negativeDaugh = mcPartDaughter1;
	if (mcPartDaughter0->GetPdgCode()<0 && mcPartDaughter1->GetPdgCode()>0){
		// inverting in case the positive daughter is the second one
		positiveDaugh = mcPartDaughter1;
		negativeDaugh = mcPartDaughter0;
	}
	// getting the momentum from the daughters
	Double_t px[2] = {positiveDaugh->Px(), negativeDaugh->Px()};		
	Double_t py[2] = {positiveDaugh->Py(), negativeDaugh->Py()};		
	Double_t pz[2] = {positiveDaugh->Pz(), negativeDaugh->Pz()};
	
	Double_t d0[2] = {0.,0.};		
	
	AliAODRecoDecayHF* decay = new AliAODRecoDecayHF(vtx1,vtx2daughter0,nprongs,charge,px,py,pz,d0);
	
	Double_t cosThetaStar = 0.;
	Double_t cosThetaStarD0 = 0.;
	Double_t cosThetaStarD0bar = 0.;
	cosThetaStarD0 = decay->CosThetaStar(1,421,211,321);
	cosThetaStarD0bar = decay->CosThetaStar(0,421,321,211);
	if (fmcPartCandidate->GetPdgCode() == 421){  // D0
		AliDebug(3, Form("D0, with pdgprong0 = %d, pdgprong1 = %d",mcPartDaughter0->GetPdgCode(),mcPartDaughter1->GetPdgCode()));
		cosThetaStar = cosThetaStarD0;
	}
	else if (fmcPartCandidate->GetPdgCode() == -421){  // D0bar{
		AliDebug(3, Form("D0bar, with pdgprong0 = %d, pdgprong1 = %d",mcPartDaughter0->GetPdgCode(),mcPartDaughter1->GetPdgCode()));
		cosThetaStar = cosThetaStarD0bar;
	}
	else{
		AliWarning("There are problems!! particle was expected to be either a D0 or a D0bar, check...");
		delete decay;
		return bGenValues;
	}
	if (cosThetaStar < -1 || cosThetaStar > 1) {
		AliWarning("Invalid value for cosine Theta star, returning");
		delete decay;
		return bGenValues;
	}
		
	//ct
	Double_t cT = decay->Ct(421);
	// get the pT of the daughters
	Double_t pTpi = 0.;
	Double_t pTK = 0.;
	
	if (TMath::Abs(mcPartDaughter0->GetPdgCode()) == 211) {
		pTpi = mcPartDaughter0->Pt();
		pTK = mcPartDaughter1->Pt();
	}
	else {
		pTpi = mcPartDaughter1->Pt();
		pTK = mcPartDaughter0->Pt();
	}
	
	switch (fConfiguration){
	case AliCFTaskVertexingHF::kSnail:
		vectorMC[0] = fmcPartCandidate->Pt();
		vectorMC[1] = fmcPartCandidate->Y() ;
		vectorMC[2] = cosThetaStar ;
		vectorMC[3] = pTpi ;
		vectorMC[4] = pTK ;
		vectorMC[5] = cT*1.E4 ;  // in micron
		vectorMC[6] = 0.;   // dummy value for dca, meaningless in MC
		vectorMC[7] = -80000.; // dummy value for d0pixd0K, meaningless in MC, in micron^2
		vectorMC[8] = 1.01;    // dummy value for cosPointing, meaningless in MC
		vectorMC[9] = fmcPartCandidate->Phi(); 
		vectorMC[10] = fzMCVertex;    // z of reconstructed of primary vertex
		vectorMC[11] = fCentValue;   //reconstructed centrality 
		vectorMC[12] = 1.;           // fake: always filling with 1 at MC level 
		vectorMC[13] = 1.01; // dummy value for cosPointingXY  multiplicity
		vectorMC[14] = 0.; // dummy value for NormalizedDecayLengthXY multiplicity
		vectorMC[15] = fMultiplicity; // reconstructed multiplicity
		break;
	case AliCFTaskVertexingHF::kCheetah:
		vectorMC[0] = fmcPartCandidate->Pt();
		vectorMC[1] = fmcPartCandidate->Y() ;
		vectorMC[2] = cT*1.E4; // in micron
		vectorMC[3] = fmcPartCandidate->Phi();
		vectorMC[4] = fzMCVertex;
		vectorMC[5] = fCentValue;   // dummy value for dca, meaningless in MC
		vectorMC[6] = 1. ;  // fake: always filling with 1 at MC level 
		vectorMC[7] = fMultiplicity;   // dummy value for d0pi, meaningless in MC, in micron
		break;
	}
	delete decay;
	bGenValues = kTRUE;
	return bGenValues;
}
//____________________________________________
Bool_t AliCFVertexingHF2Prong::GetRecoValuesFromCandidate(Double_t *vectorReco) const
{
	//
	// Getting the reconstructed values from the candidate
	// 
	
	Bool_t bFillRecoValues=kFALSE;
	
	AliAODRecoDecayHF2Prong *d0toKpi = (AliAODRecoDecayHF2Prong*)fRecoCandidate;
	
	if (d0toKpi->GetPrimaryVtx())AliDebug(3,"d0toKpi has primary vtx\n");
	if (fRecoCandidate->GetPrimaryVtx())AliDebug(3,"fRecoCandidate has primary vtx\n");
	
	Double_t pt = d0toKpi->Pt();
	Double_t rapidity = d0toKpi->YD0();
	Double_t invMass=0.;
	Double_t cosThetaStar = 9999.;
	Double_t pTpi = 0.;
	Double_t pTK = 0.;
	Double_t dca = d0toKpi->GetDCA();
	Double_t d0pi = 0.;
	Double_t d0K = 0.;
	Double_t d0xd0 = d0toKpi->Prodd0d0();
	Double_t cosPointingAngle = d0toKpi->CosPointingAngle();
	Double_t phi = d0toKpi->Phi();
	Int_t pdgCode = fmcPartCandidate->GetPdgCode();
	Double_t cosPointingAngleXY = d0toKpi->CosPointingAngleXY();
	Double_t normDecayLengthXY = d0toKpi->NormalizedDecayLengthXY();
       
	if (pdgCode > 0){
		cosThetaStar = d0toKpi->CosThetaStarD0();
		pTpi = d0toKpi->PtProng(0);
		pTK = d0toKpi->PtProng(1);
		d0pi = d0toKpi->Getd0Prong(0);
		d0K = d0toKpi->Getd0Prong(1);
		invMass=d0toKpi->InvMassD0();
	}
	else {
		cosThetaStar = d0toKpi->CosThetaStarD0bar();
		pTpi = d0toKpi->PtProng(1);
		pTK = d0toKpi->PtProng(0);
		d0pi = d0toKpi->Getd0Prong(1);
		d0K = d0toKpi->Getd0Prong(0);
		invMass= d0toKpi->InvMassD0bar();
	}
	
	Double_t cT = d0toKpi->CtD0();	
	
	switch (fConfiguration){
	case AliCFTaskVertexingHF::kSnail:
		vectorReco[0] = pt;
		vectorReco[1] = rapidity;
		vectorReco[2] = cosThetaStar;
		vectorReco[3] = pTpi;
		vectorReco[4] = pTK;
		vectorReco[5] = cT*1.E4;  // in micron
		vectorReco[6] = dca*1.E4;  // in micron
		vectorReco[7] = d0xd0*1.E8;  // in micron^2
		vectorReco[8] = cosPointingAngle; 
		vectorReco[9] = phi;  
		vectorReco[10] = fzPrimVertex;    // z of reconstructed of primary vertex
		vectorReco[11] = fCentValue; //reconstructed centrality 
		vectorReco[12] = fFake;      // whether the reconstructed candidate was a fake (fFake = 0) or not (fFake = 2) 
		vectorReco[13] = cosPointingAngleXY; 
		vectorReco[14] = normDecayLengthXY; // in cm
		vectorReco[15] = fMultiplicity; // reconstructed multiplicity
		break;
	case AliCFTaskVertexingHF::kCheetah:
		vectorReco[0] = pt;
		vectorReco[1] = rapidity ;
		vectorReco[2] = cT*1.E4; // in micron
		vectorReco[3] = phi; 
		vectorReco[4] = fzPrimVertex;
		vectorReco[5] = fCentValue;   
		vectorReco[6] = fFake ; 
		vectorReco[7] = fMultiplicity;  
		break;
	}

	bFillRecoValues = kTRUE;

	return bFillRecoValues;
}

//_____________________________________________________________
Bool_t AliCFVertexingHF2Prong::CheckMCChannelDecay() const
{ 
	//
	// checking the MC decay channel
	//
	Bool_t checkCD = kFALSE;
	Int_t daughter0 = fmcPartCandidate->GetDaughter(0);
	Int_t daughter1 = fmcPartCandidate->GetDaughter(1);
	AliAODMCParticle* mcPartDaughter0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter0));
	AliAODMCParticle* mcPartDaughter1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter1));
	
	if (!mcPartDaughter0 || !mcPartDaughter1) {
		AliDebug (2,"Problems in the MC Daughters\n");
		return checkCD;
	}
	
	if (!(TMath::Abs(mcPartDaughter0->GetPdgCode())==321 &&
	      TMath::Abs(mcPartDaughter1->GetPdgCode())==211) && 
	    !(TMath::Abs(mcPartDaughter0->GetPdgCode())==211 &&
	      TMath::Abs(mcPartDaughter1->GetPdgCode())==321)) {
		AliDebug(2, "The D0 MC doesn't come from a Kpi decay, skipping!!");
		return checkCD;  
	}

	Double_t sumPxDau=mcPartDaughter0->Px()+mcPartDaughter1->Px();
	Double_t sumPyDau=mcPartDaughter0->Py()+mcPartDaughter1->Py();
	Double_t sumPzDau=mcPartDaughter0->Pz()+mcPartDaughter1->Pz();
	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;
	
}

 AliCFVertexingHF2Prong.cxx:1
 AliCFVertexingHF2Prong.cxx:2
 AliCFVertexingHF2Prong.cxx:3
 AliCFVertexingHF2Prong.cxx:4
 AliCFVertexingHF2Prong.cxx:5
 AliCFVertexingHF2Prong.cxx:6
 AliCFVertexingHF2Prong.cxx:7
 AliCFVertexingHF2Prong.cxx:8
 AliCFVertexingHF2Prong.cxx:9
 AliCFVertexingHF2Prong.cxx:10
 AliCFVertexingHF2Prong.cxx:11
 AliCFVertexingHF2Prong.cxx:12
 AliCFVertexingHF2Prong.cxx:13
 AliCFVertexingHF2Prong.cxx:14
 AliCFVertexingHF2Prong.cxx:15
 AliCFVertexingHF2Prong.cxx:16
 AliCFVertexingHF2Prong.cxx:17
 AliCFVertexingHF2Prong.cxx:18
 AliCFVertexingHF2Prong.cxx:19
 AliCFVertexingHF2Prong.cxx:20
 AliCFVertexingHF2Prong.cxx:21
 AliCFVertexingHF2Prong.cxx:22
 AliCFVertexingHF2Prong.cxx:23
 AliCFVertexingHF2Prong.cxx:24
 AliCFVertexingHF2Prong.cxx:25
 AliCFVertexingHF2Prong.cxx:26
 AliCFVertexingHF2Prong.cxx:27
 AliCFVertexingHF2Prong.cxx:28
 AliCFVertexingHF2Prong.cxx:29
 AliCFVertexingHF2Prong.cxx:30
 AliCFVertexingHF2Prong.cxx:31
 AliCFVertexingHF2Prong.cxx:32
 AliCFVertexingHF2Prong.cxx:33
 AliCFVertexingHF2Prong.cxx:34
 AliCFVertexingHF2Prong.cxx:35
 AliCFVertexingHF2Prong.cxx:36
 AliCFVertexingHF2Prong.cxx:37
 AliCFVertexingHF2Prong.cxx:38
 AliCFVertexingHF2Prong.cxx:39
 AliCFVertexingHF2Prong.cxx:40
 AliCFVertexingHF2Prong.cxx:41
 AliCFVertexingHF2Prong.cxx:42
 AliCFVertexingHF2Prong.cxx:43
 AliCFVertexingHF2Prong.cxx:44
 AliCFVertexingHF2Prong.cxx:45
 AliCFVertexingHF2Prong.cxx:46
 AliCFVertexingHF2Prong.cxx:47
 AliCFVertexingHF2Prong.cxx:48
 AliCFVertexingHF2Prong.cxx:49
 AliCFVertexingHF2Prong.cxx:50
 AliCFVertexingHF2Prong.cxx:51
 AliCFVertexingHF2Prong.cxx:52
 AliCFVertexingHF2Prong.cxx:53
 AliCFVertexingHF2Prong.cxx:54
 AliCFVertexingHF2Prong.cxx:55
 AliCFVertexingHF2Prong.cxx:56
 AliCFVertexingHF2Prong.cxx:57
 AliCFVertexingHF2Prong.cxx:58
 AliCFVertexingHF2Prong.cxx:59
 AliCFVertexingHF2Prong.cxx:60
 AliCFVertexingHF2Prong.cxx:61
 AliCFVertexingHF2Prong.cxx:62
 AliCFVertexingHF2Prong.cxx:63
 AliCFVertexingHF2Prong.cxx:64
 AliCFVertexingHF2Prong.cxx:65
 AliCFVertexingHF2Prong.cxx:66
 AliCFVertexingHF2Prong.cxx:67
 AliCFVertexingHF2Prong.cxx:68
 AliCFVertexingHF2Prong.cxx:69
 AliCFVertexingHF2Prong.cxx:70
 AliCFVertexingHF2Prong.cxx:71
 AliCFVertexingHF2Prong.cxx:72
 AliCFVertexingHF2Prong.cxx:73
 AliCFVertexingHF2Prong.cxx:74
 AliCFVertexingHF2Prong.cxx:75
 AliCFVertexingHF2Prong.cxx:76
 AliCFVertexingHF2Prong.cxx:77
 AliCFVertexingHF2Prong.cxx:78
 AliCFVertexingHF2Prong.cxx:79
 AliCFVertexingHF2Prong.cxx:80
 AliCFVertexingHF2Prong.cxx:81
 AliCFVertexingHF2Prong.cxx:82
 AliCFVertexingHF2Prong.cxx:83
 AliCFVertexingHF2Prong.cxx:84
 AliCFVertexingHF2Prong.cxx:85
 AliCFVertexingHF2Prong.cxx:86
 AliCFVertexingHF2Prong.cxx:87
 AliCFVertexingHF2Prong.cxx:88
 AliCFVertexingHF2Prong.cxx:89
 AliCFVertexingHF2Prong.cxx:90
 AliCFVertexingHF2Prong.cxx:91
 AliCFVertexingHF2Prong.cxx:92
 AliCFVertexingHF2Prong.cxx:93
 AliCFVertexingHF2Prong.cxx:94
 AliCFVertexingHF2Prong.cxx:95
 AliCFVertexingHF2Prong.cxx:96
 AliCFVertexingHF2Prong.cxx:97
 AliCFVertexingHF2Prong.cxx:98
 AliCFVertexingHF2Prong.cxx:99
 AliCFVertexingHF2Prong.cxx:100
 AliCFVertexingHF2Prong.cxx:101
 AliCFVertexingHF2Prong.cxx:102
 AliCFVertexingHF2Prong.cxx:103
 AliCFVertexingHF2Prong.cxx:104
 AliCFVertexingHF2Prong.cxx:105
 AliCFVertexingHF2Prong.cxx:106
 AliCFVertexingHF2Prong.cxx:107
 AliCFVertexingHF2Prong.cxx:108
 AliCFVertexingHF2Prong.cxx:109
 AliCFVertexingHF2Prong.cxx:110
 AliCFVertexingHF2Prong.cxx:111
 AliCFVertexingHF2Prong.cxx:112
 AliCFVertexingHF2Prong.cxx:113
 AliCFVertexingHF2Prong.cxx:114
 AliCFVertexingHF2Prong.cxx:115
 AliCFVertexingHF2Prong.cxx:116
 AliCFVertexingHF2Prong.cxx:117
 AliCFVertexingHF2Prong.cxx:118
 AliCFVertexingHF2Prong.cxx:119
 AliCFVertexingHF2Prong.cxx:120
 AliCFVertexingHF2Prong.cxx:121
 AliCFVertexingHF2Prong.cxx:122
 AliCFVertexingHF2Prong.cxx:123
 AliCFVertexingHF2Prong.cxx:124
 AliCFVertexingHF2Prong.cxx:125
 AliCFVertexingHF2Prong.cxx:126
 AliCFVertexingHF2Prong.cxx:127
 AliCFVertexingHF2Prong.cxx:128
 AliCFVertexingHF2Prong.cxx:129
 AliCFVertexingHF2Prong.cxx:130
 AliCFVertexingHF2Prong.cxx:131
 AliCFVertexingHF2Prong.cxx:132
 AliCFVertexingHF2Prong.cxx:133
 AliCFVertexingHF2Prong.cxx:134
 AliCFVertexingHF2Prong.cxx:135
 AliCFVertexingHF2Prong.cxx:136
 AliCFVertexingHF2Prong.cxx:137
 AliCFVertexingHF2Prong.cxx:138
 AliCFVertexingHF2Prong.cxx:139
 AliCFVertexingHF2Prong.cxx:140
 AliCFVertexingHF2Prong.cxx:141
 AliCFVertexingHF2Prong.cxx:142
 AliCFVertexingHF2Prong.cxx:143
 AliCFVertexingHF2Prong.cxx:144
 AliCFVertexingHF2Prong.cxx:145
 AliCFVertexingHF2Prong.cxx:146
 AliCFVertexingHF2Prong.cxx:147
 AliCFVertexingHF2Prong.cxx:148
 AliCFVertexingHF2Prong.cxx:149
 AliCFVertexingHF2Prong.cxx:150
 AliCFVertexingHF2Prong.cxx:151
 AliCFVertexingHF2Prong.cxx:152
 AliCFVertexingHF2Prong.cxx:153
 AliCFVertexingHF2Prong.cxx:154
 AliCFVertexingHF2Prong.cxx:155
 AliCFVertexingHF2Prong.cxx:156
 AliCFVertexingHF2Prong.cxx:157
 AliCFVertexingHF2Prong.cxx:158
 AliCFVertexingHF2Prong.cxx:159
 AliCFVertexingHF2Prong.cxx:160
 AliCFVertexingHF2Prong.cxx:161
 AliCFVertexingHF2Prong.cxx:162
 AliCFVertexingHF2Prong.cxx:163
 AliCFVertexingHF2Prong.cxx:164
 AliCFVertexingHF2Prong.cxx:165
 AliCFVertexingHF2Prong.cxx:166
 AliCFVertexingHF2Prong.cxx:167
 AliCFVertexingHF2Prong.cxx:168
 AliCFVertexingHF2Prong.cxx:169
 AliCFVertexingHF2Prong.cxx:170
 AliCFVertexingHF2Prong.cxx:171
 AliCFVertexingHF2Prong.cxx:172
 AliCFVertexingHF2Prong.cxx:173
 AliCFVertexingHF2Prong.cxx:174
 AliCFVertexingHF2Prong.cxx:175
 AliCFVertexingHF2Prong.cxx:176
 AliCFVertexingHF2Prong.cxx:177
 AliCFVertexingHF2Prong.cxx:178
 AliCFVertexingHF2Prong.cxx:179
 AliCFVertexingHF2Prong.cxx:180
 AliCFVertexingHF2Prong.cxx:181
 AliCFVertexingHF2Prong.cxx:182
 AliCFVertexingHF2Prong.cxx:183
 AliCFVertexingHF2Prong.cxx:184
 AliCFVertexingHF2Prong.cxx:185
 AliCFVertexingHF2Prong.cxx:186
 AliCFVertexingHF2Prong.cxx:187
 AliCFVertexingHF2Prong.cxx:188
 AliCFVertexingHF2Prong.cxx:189
 AliCFVertexingHF2Prong.cxx:190
 AliCFVertexingHF2Prong.cxx:191
 AliCFVertexingHF2Prong.cxx:192
 AliCFVertexingHF2Prong.cxx:193
 AliCFVertexingHF2Prong.cxx:194
 AliCFVertexingHF2Prong.cxx:195
 AliCFVertexingHF2Prong.cxx:196
 AliCFVertexingHF2Prong.cxx:197
 AliCFVertexingHF2Prong.cxx:198
 AliCFVertexingHF2Prong.cxx:199
 AliCFVertexingHF2Prong.cxx:200
 AliCFVertexingHF2Prong.cxx:201
 AliCFVertexingHF2Prong.cxx:202
 AliCFVertexingHF2Prong.cxx:203
 AliCFVertexingHF2Prong.cxx:204
 AliCFVertexingHF2Prong.cxx:205
 AliCFVertexingHF2Prong.cxx:206
 AliCFVertexingHF2Prong.cxx:207
 AliCFVertexingHF2Prong.cxx:208
 AliCFVertexingHF2Prong.cxx:209
 AliCFVertexingHF2Prong.cxx:210
 AliCFVertexingHF2Prong.cxx:211
 AliCFVertexingHF2Prong.cxx:212
 AliCFVertexingHF2Prong.cxx:213
 AliCFVertexingHF2Prong.cxx:214
 AliCFVertexingHF2Prong.cxx:215
 AliCFVertexingHF2Prong.cxx:216
 AliCFVertexingHF2Prong.cxx:217
 AliCFVertexingHF2Prong.cxx:218
 AliCFVertexingHF2Prong.cxx:219
 AliCFVertexingHF2Prong.cxx:220
 AliCFVertexingHF2Prong.cxx:221
 AliCFVertexingHF2Prong.cxx:222
 AliCFVertexingHF2Prong.cxx:223
 AliCFVertexingHF2Prong.cxx:224
 AliCFVertexingHF2Prong.cxx:225
 AliCFVertexingHF2Prong.cxx:226
 AliCFVertexingHF2Prong.cxx:227
 AliCFVertexingHF2Prong.cxx:228
 AliCFVertexingHF2Prong.cxx:229
 AliCFVertexingHF2Prong.cxx:230
 AliCFVertexingHF2Prong.cxx:231
 AliCFVertexingHF2Prong.cxx:232
 AliCFVertexingHF2Prong.cxx:233
 AliCFVertexingHF2Prong.cxx:234
 AliCFVertexingHF2Prong.cxx:235
 AliCFVertexingHF2Prong.cxx:236
 AliCFVertexingHF2Prong.cxx:237
 AliCFVertexingHF2Prong.cxx:238
 AliCFVertexingHF2Prong.cxx:239
 AliCFVertexingHF2Prong.cxx:240
 AliCFVertexingHF2Prong.cxx:241
 AliCFVertexingHF2Prong.cxx:242
 AliCFVertexingHF2Prong.cxx:243
 AliCFVertexingHF2Prong.cxx:244
 AliCFVertexingHF2Prong.cxx:245
 AliCFVertexingHF2Prong.cxx:246
 AliCFVertexingHF2Prong.cxx:247
 AliCFVertexingHF2Prong.cxx:248
 AliCFVertexingHF2Prong.cxx:249
 AliCFVertexingHF2Prong.cxx:250
 AliCFVertexingHF2Prong.cxx:251
 AliCFVertexingHF2Prong.cxx:252
 AliCFVertexingHF2Prong.cxx:253
 AliCFVertexingHF2Prong.cxx:254
 AliCFVertexingHF2Prong.cxx:255
 AliCFVertexingHF2Prong.cxx:256
 AliCFVertexingHF2Prong.cxx:257
 AliCFVertexingHF2Prong.cxx:258
 AliCFVertexingHF2Prong.cxx:259
 AliCFVertexingHF2Prong.cxx:260
 AliCFVertexingHF2Prong.cxx:261
 AliCFVertexingHF2Prong.cxx:262
 AliCFVertexingHF2Prong.cxx:263
 AliCFVertexingHF2Prong.cxx:264
 AliCFVertexingHF2Prong.cxx:265
 AliCFVertexingHF2Prong.cxx:266
 AliCFVertexingHF2Prong.cxx:267
 AliCFVertexingHF2Prong.cxx:268
 AliCFVertexingHF2Prong.cxx:269
 AliCFVertexingHF2Prong.cxx:270
 AliCFVertexingHF2Prong.cxx:271
 AliCFVertexingHF2Prong.cxx:272
 AliCFVertexingHF2Prong.cxx:273
 AliCFVertexingHF2Prong.cxx:274
 AliCFVertexingHF2Prong.cxx:275
 AliCFVertexingHF2Prong.cxx:276
 AliCFVertexingHF2Prong.cxx:277
 AliCFVertexingHF2Prong.cxx:278
 AliCFVertexingHF2Prong.cxx:279
 AliCFVertexingHF2Prong.cxx:280
 AliCFVertexingHF2Prong.cxx:281
 AliCFVertexingHF2Prong.cxx:282
 AliCFVertexingHF2Prong.cxx:283
 AliCFVertexingHF2Prong.cxx:284
 AliCFVertexingHF2Prong.cxx:285
 AliCFVertexingHF2Prong.cxx:286
 AliCFVertexingHF2Prong.cxx:287
 AliCFVertexingHF2Prong.cxx:288
 AliCFVertexingHF2Prong.cxx:289
 AliCFVertexingHF2Prong.cxx:290
 AliCFVertexingHF2Prong.cxx:291
 AliCFVertexingHF2Prong.cxx:292
 AliCFVertexingHF2Prong.cxx:293
 AliCFVertexingHF2Prong.cxx:294
 AliCFVertexingHF2Prong.cxx:295
 AliCFVertexingHF2Prong.cxx:296
 AliCFVertexingHF2Prong.cxx:297
 AliCFVertexingHF2Prong.cxx:298
 AliCFVertexingHF2Prong.cxx:299
 AliCFVertexingHF2Prong.cxx:300
 AliCFVertexingHF2Prong.cxx:301
 AliCFVertexingHF2Prong.cxx:302
 AliCFVertexingHF2Prong.cxx:303
 AliCFVertexingHF2Prong.cxx:304
 AliCFVertexingHF2Prong.cxx:305
 AliCFVertexingHF2Prong.cxx:306
 AliCFVertexingHF2Prong.cxx:307
 AliCFVertexingHF2Prong.cxx:308
 AliCFVertexingHF2Prong.cxx:309
 AliCFVertexingHF2Prong.cxx:310
 AliCFVertexingHF2Prong.cxx:311
 AliCFVertexingHF2Prong.cxx:312
 AliCFVertexingHF2Prong.cxx:313
 AliCFVertexingHF2Prong.cxx:314
 AliCFVertexingHF2Prong.cxx:315
 AliCFVertexingHF2Prong.cxx:316
 AliCFVertexingHF2Prong.cxx:317
 AliCFVertexingHF2Prong.cxx:318
 AliCFVertexingHF2Prong.cxx:319
 AliCFVertexingHF2Prong.cxx:320
 AliCFVertexingHF2Prong.cxx:321
 AliCFVertexingHF2Prong.cxx:322
 AliCFVertexingHF2Prong.cxx:323
 AliCFVertexingHF2Prong.cxx:324
 AliCFVertexingHF2Prong.cxx:325
 AliCFVertexingHF2Prong.cxx:326
 AliCFVertexingHF2Prong.cxx:327
 AliCFVertexingHF2Prong.cxx:328
 AliCFVertexingHF2Prong.cxx:329
 AliCFVertexingHF2Prong.cxx:330
 AliCFVertexingHF2Prong.cxx:331
 AliCFVertexingHF2Prong.cxx:332
 AliCFVertexingHF2Prong.cxx:333
 AliCFVertexingHF2Prong.cxx:334
 AliCFVertexingHF2Prong.cxx:335
 AliCFVertexingHF2Prong.cxx:336
 AliCFVertexingHF2Prong.cxx:337
 AliCFVertexingHF2Prong.cxx:338
 AliCFVertexingHF2Prong.cxx:339
 AliCFVertexingHF2Prong.cxx:340
 AliCFVertexingHF2Prong.cxx:341
 AliCFVertexingHF2Prong.cxx:342
 AliCFVertexingHF2Prong.cxx:343
 AliCFVertexingHF2Prong.cxx:344
 AliCFVertexingHF2Prong.cxx:345
 AliCFVertexingHF2Prong.cxx:346
 AliCFVertexingHF2Prong.cxx:347
 AliCFVertexingHF2Prong.cxx:348
 AliCFVertexingHF2Prong.cxx:349
 AliCFVertexingHF2Prong.cxx:350
 AliCFVertexingHF2Prong.cxx:351
 AliCFVertexingHF2Prong.cxx:352
 AliCFVertexingHF2Prong.cxx:353
 AliCFVertexingHF2Prong.cxx:354
 AliCFVertexingHF2Prong.cxx:355
 AliCFVertexingHF2Prong.cxx:356
 AliCFVertexingHF2Prong.cxx:357
 AliCFVertexingHF2Prong.cxx:358
 AliCFVertexingHF2Prong.cxx:359
 AliCFVertexingHF2Prong.cxx:360
 AliCFVertexingHF2Prong.cxx:361