#include "AliAODVertex.h"
+#include "AliAODTrack.h"
+
ClassImp(AliAODVertex)
//______________________________________________________________________________
AliAODVertex::AliAODVertex() :
TObject(),
- fChi2(-999.),
+ fChi2perNDF(-999.),
fCovMatrix(NULL),
fParent(0x0),
fDaughters(),
//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Double_t position[3],
- const Double_t covMatrix[6],
- Double_t chi2,
+ const Double_t covMatrix[6],
+ Double_t chi2perNDF,
TObject *parent,
Char_t vtype) :
TObject(),
- fChi2(chi2),
+ fChi2perNDF(chi2perNDF),
fCovMatrix(NULL),
fParent(parent),
fDaughters(),
//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Float_t position[3],
const Float_t covMatrix[6],
- Double_t chi2,
+ Double_t chi2perNDF,
TObject *parent,
Char_t vtype) :
+
TObject(),
- fChi2(chi2),
+ fChi2perNDF(chi2perNDF),
fCovMatrix(NULL),
fParent(parent),
fDaughters(),
//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Double_t position[3],
- Double_t chi2,
+ Double_t chi2perNDF,
Char_t vtype) :
TObject(),
- fChi2(chi2),
+ fChi2perNDF(chi2perNDF),
fCovMatrix(NULL),
fParent(0x0),
fDaughters(),
//______________________________________________________________________________
AliAODVertex::AliAODVertex(const Float_t position[3],
- Double_t chi2,
+ Double_t chi2perNDF,
Char_t vtype) :
TObject(),
- fChi2(chi2),
+ fChi2perNDF(chi2perNDF),
fCovMatrix(NULL),
fParent(0x0),
fDaughters(),
//______________________________________________________________________________
AliAODVertex::AliAODVertex(const AliAODVertex& vtx) :
TObject(vtx),
- fChi2(vtx.fChi2),
+ fChi2perNDF(vtx.fChi2perNDF),
fCovMatrix(NULL),
fParent(vtx.fParent),
fDaughters(vtx.fDaughters),
for (int i = 0; i < 3; i++)
fPosition[i] = vtx.fPosition[i];
- if (vtx.fCovMatrix) fCovMatrix=new AliAODVtxCov(*vtx.fCovMatrix);
+ if (vtx.fCovMatrix) fCovMatrix=new AliAODRedCov<3>(*vtx.fCovMatrix);
}
//______________________________________________________________________________
for (int i = 0; i < 3; i++)
fPosition[i] = vtx.fPosition[i];
- fChi2 = vtx.fChi2;
+ fChi2perNDF = vtx.fChi2perNDF;
//covariance matrix
delete fCovMatrix;
fCovMatrix = NULL;
- if (vtx.fCovMatrix) fCovMatrix=new AliAODVtxCov(*vtx.fCovMatrix);
+ if (vtx.fCovMatrix) fCovMatrix=new AliAODRedCov<3>(*vtx.fCovMatrix);
//other stuff
fParent = vtx.fParent;
*/
}
+//______________________________________________________________________________
+Int_t AliAODVertex::GetNContributors() const
+{
+ // Returns the number of tracks used to fit this vertex.
+
+ Int_t cont = 0;
+
+ for (Int_t iDaug = 0; iDaug < GetNDaughters(); iDaug++) {
+ if (((AliAODTrack*)fDaughters.At(iDaug))->GetUsedForVtxFit()) cont++;
+ }
+
+ return cont;
+}
+
//______________________________________________________________________________
Bool_t AliAODVertex::HasDaughter(TObject *daughter) const
{
fCovMatrix[4],
fCovMatrix[5]);
} */
- printf(" Chi^2 = %f\n", fChi2);
+ printf(" Chi^2/NDF = %f\n", fChi2perNDF);
}
-//-------------------------------------------------------------------------
-// AOD track cov matrix base class
-//-------------------------------------------------------------------------
-
-ClassImp(AliAODVertex::AliAODVtxCov)
-
-//______________________________________________________________________________
-template <class T> void AliAODVertex::AliAODVtxCov::GetCovMatrix(T *cmat) const
-{
- //
- // Returns the external cov matrix
- //
- cmat[ 0] = fDiag[ 0]*fDiag[ 0];
- cmat[ 2] = fDiag[ 1]*fDiag[ 1];
- cmat[ 5] = fDiag[ 2]*fDiag[ 2];
-
- //
- cmat[ 1] = fODia[ 0]*fDiag[ 0]*fDiag[ 1];
- cmat[ 3] = fODia[ 1]*fDiag[ 0]*fDiag[ 2];
- cmat[ 4] = fODia[ 2]*fDiag[ 1]*fDiag[ 2];
-}
-
-
-//______________________________________________________________________________
-template <class T> void AliAODVertex::AliAODVtxCov::SetCovMatrix(T *cmat)
-{
- //
- // Sets the external cov matrix
- //
- if(cmat) {
- fDiag[ 0] = TMath::Sqrt(cmat[ 0]);
- fDiag[ 1] = TMath::Sqrt(cmat[ 2]);
- fDiag[ 2] = TMath::Sqrt(cmat[ 5]);
- //
- fODia[ 0] = cmat[ 1]/(fDiag[ 0]*fDiag[ 1]);
- fODia[ 1] = cmat[ 3]/(fDiag[ 0]*fDiag[ 2]);
- fODia[ 2] = cmat[ 4]/(fDiag[ 1]*fDiag[ 2]);
- } else {
- for(Int_t i=0; i< 3; ++i) {
- fDiag[i]=-999.; fODia[i]=0.;}
- }
-}