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

//-------------------------------------------------------------------------
//     AOD track base class
//     Base class for Analysis Object Data
//     Generic version
//     Author: Markus Oldenburg, CERN
//     Inheritance from AliVVertex: A. Dainese
//-------------------------------------------------------------------------

#include "AliAODVertex.h"
#include "AliAODTrack.h"

ClassImp(AliAODVertex)

//______________________________________________________________________________
AliAODVertex::AliAODVertex() : 
  AliVVertex(),
  fChi2perNDF(-999.),
  fID(-1),
  fBCID(AliVTrack::kTOFBCNA),
  fType(kUndef),
  fNprong(0),
  fIprong(0),
  fNContributors(0),
  fCovMatrix(NULL),
  fParent(),
  fDaughters(),
  fProngs(NULL)
  {
  // default constructor

  fPosition[0] = fPosition[1] = fPosition[2] = -999.;
}

//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Double_t position[3], 
			   const Double_t covMatrix[6],
			   Double_t  chi2perNDF,
			   TObject  *parent,
			   Short_t id,
			   Char_t vtype, 
			   Int_t  nprong) :
  AliVVertex(),
  fChi2perNDF(chi2perNDF),
  fID(id),
  fBCID(AliVTrack::kTOFBCNA),
  fType(vtype),
  fNprong(nprong),
  fIprong(0),
  fNContributors(0),
  fCovMatrix(NULL),
  fParent(parent),
  fDaughters(),
  fProngs(0)
{
  // constructor

  SetPosition(position);
  if (covMatrix) SetCovMatrix(covMatrix);
  MakeProngs();
}

//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Float_t position[3], 
			   const Float_t  covMatrix[6],
			   Double_t  chi2perNDF,
			   TObject  *parent,
			   Short_t id,
			   Char_t vtype,
			   Int_t nprong) :

  AliVVertex(),
  fChi2perNDF(chi2perNDF),
  fID(id),
  fBCID(AliVTrack::kTOFBCNA),
  fType(vtype),
  fNprong(nprong),
  fIprong(0),
  fNContributors(0),
  fCovMatrix(NULL),
  fParent(parent),
  fDaughters(),
  fProngs(0)
{
  // constructor

  SetPosition(position);
  if (covMatrix) SetCovMatrix(covMatrix);
  MakeProngs();
}

//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Double_t position[3], 
			   Double_t  chi2perNDF,
			   Char_t vtype, 
			   Int_t nprong) :
  AliVVertex(),
  fChi2perNDF(chi2perNDF),
  fID(-1),
  fBCID(AliVTrack::kTOFBCNA),
  fType(vtype),
  fNprong(nprong),
  fIprong(0),
  fNContributors(0),
  fCovMatrix(NULL),
  fParent(),
  fDaughters(),
  fProngs(0)
{
  // constructor without covariance matrix

  SetPosition(position);  
  MakeProngs();
}

//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Float_t position[3], 
			   Double_t  chi2perNDF,
			   Char_t vtype, Int_t nprong) :
  AliVVertex(),
  fChi2perNDF(chi2perNDF),
  fID(-1),
  fBCID(AliVTrack::kTOFBCNA),
  fType(vtype),
  fNprong(nprong),
  fIprong(0),
  fNContributors(0),
  fCovMatrix(NULL),
  fParent(),
  fDaughters(),
  fProngs(0)
{
  // constructor without covariance matrix

  SetPosition(position);  
  MakeProngs();
}

//______________________________________________________________________________
AliAODVertex::~AliAODVertex() 
{
  // Destructor

  delete fCovMatrix;
  if (fNprong > 0) delete[] fProngs;
}

//______________________________________________________________________________
AliAODVertex::AliAODVertex(const AliAODVertex& vtx) :
  AliVVertex(vtx),
  fChi2perNDF(vtx.fChi2perNDF),
  fID(vtx.fID),
  fBCID(vtx.fBCID),
  fType(vtx.fType),
  fNprong(vtx.fNprong),
  fIprong(vtx.fIprong),
  fNContributors(vtx.fNContributors),
  fCovMatrix(NULL),
  fParent(vtx.fParent),
  fDaughters(vtx.fDaughters),
  fProngs(0)
{
  // Copy constructor.
  
  for (int i = 0; i < 3; i++) 
    fPosition[i] = vtx.fPosition[i];

  if (vtx.fCovMatrix) fCovMatrix=new AliAODRedCov<3>(*vtx.fCovMatrix);
  MakeProngs();
  for (int i = 0; i < fNprong; i++) {
      fProngs[i] = vtx.fProngs[i];
  }
}

//______________________________________________________________________________
AliAODVertex* AliAODVertex::CloneWithoutRefs() const
{
  // Special method to copy all but the refs 
  
  Double_t cov[6] = { 0.0 };
      
  if (fCovMatrix) fCovMatrix->GetCovMatrix(cov);
  
  AliAODVertex* v = new AliAODVertex(fPosition,
                                     cov,
                                     fChi2perNDF,
                                     0x0,
                                     fID,
                                     fType,
                                     0);
  
  v->SetName(GetName());
  // NOTE title is not allowed to be set, as GetNContributors 
  // relies on the title to use the references which are not copied here
  
  // to insure the main vertex retains the ncontributors information
  // (which is otherwise computed dynamically from
  // references to tracks, which is not kept in the returned object)
  // we set it here
  v->SetNContributors(fNContributors);  
  
  return v;
}

//______________________________________________________________________________
AliAODVertex& AliAODVertex::operator=(const AliAODVertex& vtx) 
{
  // Assignment operator
  if (this != &vtx) {

    // name and type
    AliVVertex::operator=(vtx);

    //momentum
    for (int i = 0; i < 3; i++) 
	fPosition[i] = vtx.fPosition[i];
    
    fChi2perNDF = vtx.fChi2perNDF;
    fID   = vtx.fID;
    fType = vtx.fType;
    fBCID = vtx.fBCID;
    
    //covariance matrix
    delete fCovMatrix;
    fCovMatrix = NULL;   
    if (vtx.fCovMatrix) fCovMatrix = new AliAODRedCov<3>(*vtx.fCovMatrix);
    
    //other stuff
    fNContributors = vtx.fNContributors;
    fParent        = vtx.fParent;
    fDaughters     = vtx.fDaughters;
    fNprong        = vtx.fNprong;
    fIprong        = vtx.fIprong;  
    
    MakeProngs();
    for (int i = 0; i < fNprong; i++) {
	fProngs[i] = vtx.fProngs[i];
    }
  }
  
  return *this;
}

//______________________________________________________________________________
void AliAODVertex::AddDaughter(TObject *daughter)
{
  // Add reference to daughter track
    if (!fProngs) {
	if (fDaughters.GetEntries()==0) {
	    TRefArray* arr = &fDaughters;
	    new(arr)TRefArray(TProcessID::GetProcessWithUID(daughter));  	
	}
	fDaughters.Add(daughter);	
    } else {
	if (fIprong < fNprong) {
	    fProngs[fIprong++] = daughter;
	} else {
	    AliWarning("Number of daughters out of range !\n");
	}
    }
  return;
}


//______________________________________________________________________________
template <class T> void AliAODVertex::GetSigmaXYZ(T sigma[3]) const
{
  // Return errors on vertex position in thrust frame
  
  if(fCovMatrix) {
    sigma[0]=fCovMatrix[3]; //GetCovXZ
    sigma[1]=fCovMatrix[4]; //GetCovYZ
    sigma[2]=fCovMatrix[5]; //GetCovZZ
  } else 
    sigma[0]=sigma[1]=sigma[2]=-999.;

  /*
  for (int i = 0, j = 6; i < 3; i++) {
    j -= i+1;
    sigma[2-i] = fCovMatrix ? TMath::Sqrt(fCovMatrix[j]) : -999.;
  }
  */
}

//______________________________________________________________________________
Int_t AliAODVertex::GetNContributors() const 
{
  // Returns the number of tracks used to fit this vertex.
  Int_t cont  = 0;

  TString vtitle = GetTitle();
  if (!vtitle.Contains("VertexerTracks") || vtitle.Contains("TracksNoConstraint") || fType==kPileupTracks
      ) {
    cont = fNContributors;
  } else {
    for (Int_t iDaug = 0; iDaug < GetNDaughters(); iDaug++) {
	AliAODTrack* aodT = dynamic_cast<AliAODTrack*>(fDaughters.At(iDaug));
	if (!aodT) continue;
	if (aodT->GetUsedForPrimVtxFit()) cont++;
    } 
    // the constraint adds another DOF
    if(vtitle.Contains("VertexerTracksWithConstraint"))cont++;
  }
  return cont;
}

//______________________________________________________________________________
Bool_t AliAODVertex::HasDaughter(TObject *daughter) const 
{
  // Checks if the given daughter (particle) is part of this vertex.
    if (!fProngs) {
	TRefArrayIter iter(&fDaughters);
	while (TObject *daugh = iter.Next()) {
	    if (daugh == daughter) return kTRUE;
	}
	return kFALSE;
    } else {
	Bool_t has = kFALSE;
	for (int i = 0; i < fNprong; i++) {
	    if (fProngs[i].GetObject() == daughter) has = kTRUE;
	}
	return has;
    }
}

//______________________________________________________________________________
Double_t AliAODVertex::RotatedCovMatrixXX(Double_t phi, Double_t theta) const
{
  // XX term of covariance matrix after rotation by phi around z-axis
  // and, then, by theta around new y-axis

  if (!fCovMatrix) {
    //AliFatal("Covariance matrix not set");
    return -999.;
  }

  Double_t covMatrix[6];

  GetCovMatrix(covMatrix);

  Double_t cp = TMath::Cos(phi);
  Double_t sp = TMath::Sin(phi);
  Double_t ct = TMath::Cos(theta);
  Double_t st = TMath::Sin(theta);
  return
     covMatrix[0]*cp*cp*ct*ct  // GetCovXX
    +covMatrix[1]*2.*cp*sp*ct*ct  // GetCovXY
    +covMatrix[3]*2.*cp*ct*st  // GetCovXZ
    +covMatrix[2]*sp*sp*ct*ct  // GetCovYY
    +covMatrix[4]*2.*sp*ct*st  // GetCovYZ
    +covMatrix[5]*st*st;  // GetCovZZ
}

//______________________________________________________________________________
Double_t AliAODVertex::RotatedCovMatrixXY(Double_t phi, Double_t theta) const
{
  // XY term of covariance matrix after rotation by phi around z-axis
  // and, then, by theta around new y-axis

  if (!fCovMatrix) {
    //AliFatal("Covariance matrix not set");
    return -999.;
  }

  Double_t covMatrix[6];

  GetCovMatrix(covMatrix);

  Double_t cp = TMath::Cos(phi);
  Double_t sp = TMath::Sin(phi);
  Double_t ct = TMath::Cos(theta);
  Double_t st = TMath::Sin(theta);
  return 
    -covMatrix[0]*cp*sp*ct  // GetCovXX
    +covMatrix[1]*ct*(cp*cp-sp*sp)  // GetCovXY
    -covMatrix[3]*sp*st  // GetCovXZ
    +covMatrix[2]*cp*sp*ct  // GetCovYY
    +covMatrix[4]*cp*st;  // GetCovYZ
}

//______________________________________________________________________________
Double_t AliAODVertex::RotatedCovMatrixXZ(Double_t phi, Double_t theta) const
{
  // XZ term of covariance matrix after rotation by phi around z-axis
  // and, then, by theta around new y-axis

  if (!fCovMatrix) {
    //AliFatal("Covariance matrix not set");
    return -999.;
  }

  Double_t covMatrix[6];

  GetCovMatrix(covMatrix);

  Double_t cp = TMath::Cos(phi);
  Double_t sp = TMath::Sin(phi);
  Double_t ct = TMath::Cos(theta);
  Double_t st = TMath::Sin(theta);
  return 
    -covMatrix[0]*cp*cp*ct*st  // GetCovXX
    -covMatrix[1]*2.*cp*sp*ct*st  // GetCovXY
    +covMatrix[3]*cp*(ct*ct-st*st)  // GetCovXZ
    -covMatrix[2]*sp*sp*ct*st  // GetCovYY
    +covMatrix[4]*sp*(ct*ct-st*st)  // GetCovYZ
    +covMatrix[5]*ct*st;  // GetCovZZ
}

//______________________________________________________________________________
Double_t AliAODVertex::RotatedCovMatrixYY(Double_t phi) const
{
  // YY term of covariance matrix after rotation by phi around z-axis
  // and, then, by theta around new y-axis

  if (!fCovMatrix) {
    //AliFatal("Covariance matrix not set");
    return -999.;
  }

  Double_t covMatrix[6];

  GetCovMatrix(covMatrix);

  Double_t cp = TMath::Cos(phi);
  Double_t sp = TMath::Sin(phi);
  return
     covMatrix[0]*sp*sp  // GetCovXX
    -covMatrix[1]*2.*cp*sp  // GetCovXY
    +covMatrix[2]*cp*cp;  // GetCovYY
}

//______________________________________________________________________________
Double_t AliAODVertex::RotatedCovMatrixYZ(Double_t phi, Double_t theta) const
{
  // YZ term of covariance matrix after rotation by phi around z-axis
  // and, then, by theta around new y-axis

  if (!fCovMatrix) {
    //AliFatal("Covariance matrix not set");
    return -999.;
  }

  Double_t covMatrix[6];

  GetCovMatrix(covMatrix);

  Double_t cp = TMath::Cos(phi);
  Double_t sp = TMath::Sin(phi);
  Double_t ct = TMath::Cos(theta);
  Double_t st = TMath::Sin(theta);
  return 
     covMatrix[0]*cp*sp*st  // GetCovXX
    +covMatrix[1]*st*(sp*sp-cp*cp)  // GetCovXY
    -covMatrix[3]*sp*ct  // GetCovXZ
    -covMatrix[2]*cp*sp*st  // GetCovYY
    +covMatrix[4]*cp*ct;  // GetCovYZ
}

//______________________________________________________________________________
Double_t AliAODVertex::RotatedCovMatrixZZ(Double_t phi, Double_t theta) const
{
  // ZZ term of covariance matrix after rotation by phi around z-axis
  // and, then, by theta around new y-axis

  if (!fCovMatrix) {
    //AliFatal("Covariance matrix not set");
    return -999.;
  }

  Double_t covMatrix[6];

  GetCovMatrix(covMatrix);

  Double_t cp = TMath::Cos(phi);
  Double_t sp = TMath::Sin(phi);
  Double_t ct = TMath::Cos(theta);
  Double_t st = TMath::Sin(theta);
  return
     covMatrix[0]*cp*cp*st*st  // GetCovXX
    +covMatrix[1]*2.*cp*sp*st*st  // GetCovXY
    -covMatrix[3]*2.*cp*ct*st  // GetCovXZ
    +covMatrix[2]*sp*sp*st*st  // GetCovYY
    -covMatrix[4]*2.*sp*sp*ct*st  // GetCovYZ
    +covMatrix[5]*ct*ct;  // GetCovZZ
}

//______________________________________________________________________________
Double_t AliAODVertex::Distance2ToVertex(const AliAODVertex *vtx) const
{
  // distance in 3D to another AliAODVertex

  Double_t dx = GetX()-vtx->GetX();
  Double_t dy = GetY()-vtx->GetY();
  Double_t dz = GetZ()-vtx->GetZ();

  return dx*dx+dy*dy+dz*dz;
}

//______________________________________________________________________________
Double_t AliAODVertex::DistanceXY2ToVertex(const AliAODVertex *vtx) const
{
  // distance in XY to another AliAODVertex

  Double_t dx = GetX()-vtx->GetX();
  Double_t dy = GetY()-vtx->GetY();

  return dx*dx+dy*dy;
}

//______________________________________________________________________________
Double_t AliAODVertex::Error2DistanceToVertex(AliAODVertex *vtx) const
{
  // error on the distance in 3D to another AliAODVertex

  Double_t phi,theta;
  PhiAndThetaToVertex(vtx,phi,theta);
  // error2 due to this vertex
  Double_t error2 = RotatedCovMatrixXX(phi,theta);
  // error2 due to vtx vertex
  Double_t error2vtx = vtx->RotatedCovMatrixXX(phi,theta);

  return error2+error2vtx;
}

//______________________________________________________________________________
Double_t AliAODVertex::Error2DistanceXYToVertex(AliAODVertex *vtx) const
{
  // error on the distance in XY to another AliAODVertex

  Double_t phi,theta;
  PhiAndThetaToVertex(vtx,phi,theta);
  // error2 due to this vertex
  Double_t error2 = RotatedCovMatrixXX(phi);
  // error2 due to vtx vertex
  Double_t error2vtx = vtx->RotatedCovMatrixXX(phi);

  return error2+error2vtx;
}

//______________________________________________________________________________
template <class T, class P> 
void AliAODVertex::PhiAndThetaToVertex(AliAODVertex *vtx, P &phi, T &theta) const
{
  // rotation angles around z-axis (phi) and around new y-axis (theta)
  // with which vtx is seen (used by RotatedCovMatrix... methods)

  phi = TMath::Pi()+TMath::ATan2(-vtx->GetY()+GetY(),-vtx->GetX()+GetX());
  Double_t vtxxphi = vtx->GetX()*TMath::Cos(phi)+vtx->GetY()*TMath::Sin(phi);
  Double_t xphi = GetX()*TMath::Cos(phi)+GetY()*TMath::Sin(phi);
  theta = TMath::ATan2(vtx->GetZ()-GetZ(),vtxxphi-xphi);
}

//______________________________________________________________________________
void AliAODVertex::PrintIndices() const 
{
  // Print indices of particles originating form this vertex

  TRefArrayIter iter(&fDaughters);
  while (TObject *daugh = iter.Next()) {
    printf("Particle %p originates from this vertex.\n", static_cast<void*>(daugh));
  }
}

//______________________________________________________________________________
const char* AliAODVertex::AsString() const
{
  // Make a string describing this object
  
  TString tmp(Form("%10s pos(%7.2f,%7.2f,%7.2f)",GetTypeName((AODVtx_t)GetType()),GetX(),GetY(),GetZ()));
  
  if (GetType()==kPrimary || GetType()==kMainSPD || GetType()==kPileupSPD )
  {
    tmp += Form(" ncontrib %d chi2/ndf %4.1f",GetNContributors(),GetChi2perNDF());

  }
  
  if ( !fParent.GetObject() ) 
  {
    tmp += " no parent";
  }
  if ( fDaughters.GetEntriesFast() > 0 )
  {
    if ( fDaughters.GetEntriesFast() == 1 ) 
    {
      tmp += " origin of 1 particle";
    }
    else
    {
      tmp += Form(" origin of %2d particles",fDaughters.GetEntriesFast());
    }
  }
  
  return tmp.Data();
}

//______________________________________________________________________________
const char* AliAODVertex::GetTypeName(AODVtx_t type)
{
  // Return an ASCII version of type
  
  switch (type)
  {
    case kPrimary:
      return "primary";
      break;
    case kKink:
      return "kink";
      break;
    case kV0:
      return "v0";
      break;
    case kCascade:
      return "cascade";
      break;
    case kMainSPD:
      return "mainSPD";
      break;
    case kPileupSPD:
      return "pileupSPD";
      break;
    case kPileupTracks:
      return "pileupTRK";
      break;
    case kMainTPC:
      return "mainTPC";
      break;
    default:
      return "unknown";
      break;
  };
}

//______________________________________________________________________________
void AliAODVertex::Print(Option_t* /*option*/) const 
{
  // Print information of all data members

  printf("Vertex position:\n");
  printf("     x = %f\n", fPosition[0]);
  printf("     y = %f\n", fPosition[1]);
  printf("     z = %f\n", fPosition[2]);
  printf(" parent particle: %p\n", static_cast<void*>(fParent.GetObject()));
  printf(" origin of %d particles\n", fDaughters.GetEntriesFast());
  printf(" vertex type %d\n", fType);
  
  /*
  if (fCovMatrix) {
    printf("Covariance matrix:\n");
    printf(" %12.10f  %12.10f  %12.10f\n %12.10f  %12.10f  %12.10f\n %12.10f  %12.10f  %12.10f\n", 
	   fCovMatrix[0],
	   fCovMatrix[1],
	   fCovMatrix[3],
	   fCovMatrix[1],
	   fCovMatrix[2],
	   fCovMatrix[4],
	   fCovMatrix[3],
	   fCovMatrix[4],
	   fCovMatrix[5]); 
	   } */
  printf(" Chi^2/NDF = %f\n", fChi2perNDF);
}

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