// 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() :
- TObject(),
+ AliVVertex(),
fChi2perNDF(-999.),
fID(-1),
fType(kUndef),
TObject *parent,
Short_t id,
Char_t vtype) :
- TObject(),
+ AliVVertex(),
fChi2perNDF(chi2perNDF),
fID(id),
fType(vtype),
Short_t id,
Char_t vtype) :
- TObject(),
+ AliVVertex(),
fChi2perNDF(chi2perNDF),
fID(id),
fType(vtype),
AliAODVertex::AliAODVertex(const Double_t position[3],
Double_t chi2perNDF,
Char_t vtype) :
- TObject(),
+ AliVVertex(),
fChi2perNDF(chi2perNDF),
fID(-1),
fType(vtype),
AliAODVertex::AliAODVertex(const Float_t position[3],
Double_t chi2perNDF,
Char_t vtype) :
- TObject(),
+ AliVVertex(),
fChi2perNDF(chi2perNDF),
fID(-1),
fType(vtype),
//______________________________________________________________________________
AliAODVertex::AliAODVertex(const AliAODVertex& vtx) :
- TObject(vtx),
+ AliVVertex(vtx),
fChi2perNDF(vtx.fChi2perNDF),
fID(vtx.fID),
fType(vtx.fType),
if (this != &vtx) {
// name and type
- TObject::operator=(vtx);
+ AliVVertex::operator=(vtx);
//momentum
for (int i = 0; i < 3; i++)
//-------------------------------------------------------------------------
// AOD vertex base class
// Author: Markus Oldenburg, CERN
+// Inheritance from AliVVertex: A. Dainese
//-------------------------------------------------------------------------
#include <TRef.h>
#include <TRefArray.h>
#include <TMath.h>
+#include "AliVVertex.h"
#include "AliAODRedCov.h"
-class AliAODVertex : public TObject {
+class AliAODVertex : public AliVVertex {
public :
Double_t GetX() const { return fPosition[0]; }
Double_t GetY() const { return fPosition[1]; }
Double_t GetZ() const { return fPosition[2]; }
+ void GetXYZ(Double_t position[3]) const
+ {position[0]=fPosition[0]; position[1]=fPosition[1]; position[2]=fPosition[2];}
template <class T> void GetPosition(T *pos) const
{pos[0]=fPosition[0]; pos[1]=fPosition[1]; pos[2]=fPosition[2];}
if(!fCovMatrix) return kFALSE;
fCovMatrix->GetCovMatrix(covMatrix); return kTRUE;}
+ void GetCovarianceMatrix(Double_t covmatrix[6]) const
+ {GetCovMatrix(covmatrix);}
void RemoveCovMatrix() {delete fCovMatrix; fCovMatrix=NULL;}
template <class T> void GetSigmaXYZ(T *sigma) const;
TRef fParent; // reference to the parent particle
TRefArray fDaughters; // references to the daughter particles
- ClassDef(AliAODVertex,3);
+ ClassDef(AliAODVertex,4);
};
#endif
}
return *this;
}
-
+//--------------------------------------------------------------------------
void AliESDVertex::Copy(TObject &obj) const {
// this overwrites the virtual TOBject::Copy()
*robj = *this;
}
-
-
//--------------------------------------------------------------------------
void AliESDVertex::SetToZero() {
//
virtual ~AliESDVertex() {}
-
void GetSigmaXYZ(Double_t sigma[3]) const;
void GetCovMatrix(Double_t covmatrix[6]) const;
+ void GetCovarianceMatrix(Double_t covmatrix[6]) const
+ {GetCovMatrix(covmatrix);}
void GetSNR(Double_t snr[3]) const;
Double_t GetXRes() const {return TMath::Sqrt(fCovXX);}
Double_t GetChi2() const { return fChi2; }
Double_t GetChi2toNDF() const
{ return fChi2/(2.*(Double_t)fNContributors-3.); }
+ Double_t GetChi2perNDF() const { return GetChi2toNDF();}
+ Int_t GetNDF() const {return (2*fNContributors-3);}
void Print(Option_t* option = "") const;
void PrintStatus() const {Print();}
--- /dev/null
+/**************************************************************************
+ * Copyright(c) 1998-2008, 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. *
+ **************************************************************************/
+
+
+//-------------------------------------------------------------------------
+// base class for ESD and AOD vertices
+// Author: A. Dainese
+//-------------------------------------------------------------------------
+
+#include "AliVVertex.h"
+
+ClassImp(AliVVertex)
+
+AliVVertex::AliVVertex(const AliVVertex& vVert) :
+ TNamed(vVert) { } // Copy constructor
+
+AliVVertex& AliVVertex::operator=(const AliVVertex& vVert)
+{ if (this!=&vVert) {
+ TNamed::operator=(vVert);
+ }
+
+ return *this;
+}
--- /dev/null
+#ifndef AliVVertex_H
+#define AliVVertex_H
+/* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+//-------------------------------------------------------------------------
+// base class for ESD and AOD vertices
+// Author: A. Dainese
+//-------------------------------------------------------------------------
+
+#include <TNamed.h>
+
+class AliVVertex: public TNamed {
+
+public:
+ AliVVertex() { }
+ virtual ~AliVVertex() { }
+ AliVVertex(const AliVVertex& vVert);
+ AliVVertex& operator=(const AliVVertex& vVert);
+
+ // vertex properties
+ virtual void GetXYZ(Double_t position[3]) const = 0;
+ virtual Double_t GetX() const = 0;
+ virtual Double_t GetY() const = 0;
+ virtual Double_t GetZ() const = 0;
+ virtual void GetCovarianceMatrix(Double_t covmatrix[6]) const = 0;
+
+
+ virtual Double_t GetChi2perNDF() const = 0;
+ virtual Double_t GetChi2() const = 0;
+ virtual Int_t GetNDF() const = 0;
+
+ virtual Int_t GetNContributors() const = 0;
+ virtual void PrintIndices() const = 0;
+ virtual void Print(Option_t* option = "") const = 0;
+
+ virtual void Clear(Option_t* option) {TNamed::Clear(option);}
+
+
+ ClassDef(AliVVertex,0) // base class for vertices
+};
+
+#endif
//--------------------------------------------------------------------------
AliVertex::AliVertex() :
- TNamed(),
+ AliVVertex(),
fSigma(0),
fNContributors(0),
fNIndices(0),
//--------------------------------------------------------------------------
AliVertex::AliVertex(Double_t position[3],Double_t dispersion,
Int_t nContributors):
- TNamed(),
+ AliVVertex(),
fSigma(dispersion),
fNContributors(nContributors),
fNIndices(0),
//--------------------------------------------------------------------------
AliVertex::AliVertex(const AliVertex &source):
- TNamed(source),
+ AliVVertex(source),
fSigma(source.GetDispersion()),
fNContributors(source.GetNContributors()),
fNIndices(source.GetNIndices()),
// assignment operator
//
if(&source != this){
- TNamed::operator=(source);
+ AliVVertex::operator=(source);
for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
fSigma = source.GetDispersion();
fNContributors = source.GetNContributors();
// Delete allocated memory
delete [] fIndices;
fIndices = 0;
- TNamed::Clear(option);
+ AliVVertex::Clear(option);
}
//--------------------------------------------------------------------------
return;
}
//--------------------------------------------------------------------------
+void AliVertex::GetCovarianceMatrix(Double_t covmatrix[6]) const {
+//
+// Fake method (is implmented in AliESDVertex)
+//
+ for(Int_t i=0;i<6;i++) covmatrix[i] = -999.;
+
+ return;
+}
+//--------------------------------------------------------------------------
void AliVertex::SetIndices(Int_t nindices,UShort_t *indices) {
//
// Set indices of tracks used for vertex determination
//-------------------------------------------------------
-#include <TNamed.h>
+#include "AliVVertex.h"
-class AliVertex : public TNamed {
+class AliVertex : public AliVVertex {
public:
virtual Double_t GetXv() const { return fPosition[0]; }
virtual Double_t GetYv() const { return fPosition[1]; }
virtual Double_t GetZv() const { return fPosition[2]; }
+ virtual Double_t GetX() const { return fPosition[0]; }
+ virtual Double_t GetY() const { return fPosition[1]; }
+ virtual Double_t GetZ() const { return fPosition[2]; }
virtual Double_t GetDispersion() const { return fSigma; }
virtual Int_t GetNContributors() const { return fNContributors; }
virtual Int_t GetNIndices() const { return fNIndices; }
virtual void PrintIndices() const { if(fNIndices>0)
for(Int_t i=0;i<fNIndices;i++) printf("AliVertex uses track %d\n",fIndices[i]); return; }
+ virtual void GetCovarianceMatrix(Double_t covmatrix[6]) const;
+
+ virtual Double_t GetChi2perNDF() const {return -999.;}
+ virtual Double_t GetChi2() const {return -999.;}
+ virtual Int_t GetNDF() const {return -999;}
+
protected:
Double32_t fPosition[3]; // vertex position
UShort_t *fIndices; //[fNIndices] indices of tracks used for vertex
- ClassDef(AliVertex,3) // Class for Primary Vertex
+ ClassDef(AliVertex,4) // Class for Primary Vertex
};
#endif
#pragma link C++ enum AliLog::EType_t;
#pragma link C++ class AliVParticle+;
+#pragma link C++ class AliVVertex+;
#pragma link C++ class AliVEvent+;
#pragma link C++ class AliVHeader+;
#pragma link C++ class AliVEventHandler+;
#-*- Mode: Makefile -*-
SRCS = AliVParticle.cxx \
+ AliVVertex.cxx \
AliVEvent.cxx \
AliVHeader.cxx \
AliVEventHandler.cxx \