add common abstract interface classes for flat and fat ESDs
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliVVertex.h
1 #ifndef AliVVertex_H
2 #define AliVVertex_H
3 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //-------------------------------------------------------------------------
7 //     base class for ESD and AOD vertices
8 //     Author: A. Dainese
9 //-------------------------------------------------------------------------
10
11 #include <TNamed.h>
12 #include "AliVVvertex.h"
13
14 class AliVVertex: public TNamed, public AliVVvertex {
15
16 public:
17   AliVVertex() : TNamed() { }
18   virtual ~AliVVertex() { }
19   AliVVertex(const AliVVertex& vVert); 
20   AliVVertex& operator=(const AliVVertex& vVert);
21
22   // vertex properties
23   virtual void     GetXYZ(Double_t position[3]) const = 0;
24   virtual Double_t GetX() const = 0;
25   virtual Double_t GetY() const = 0;
26   virtual Double_t GetZ() const = 0;
27   virtual void     GetCovarianceMatrix(Double_t covmatrix[6]) const = 0;
28   
29
30   virtual Double_t GetChi2perNDF() const = 0;
31   virtual Double_t GetChi2() const = 0;
32   virtual Int_t    GetNDF() const = 0;
33
34   virtual Int_t    GetNContributors() const = 0;
35   virtual void     PrintIndices() const = 0;
36   virtual void     Print(Option_t* option = "") const = 0;
37
38   virtual void     SetBC(Int_t) {}
39   virtual Int_t    GetBC() const;
40
41   virtual void Clear(Option_t* option) {TNamed::Clear(option);}
42
43
44   ClassDef(AliVVertex,1)  // base class for vertices
45 };
46
47 #endif