1 #ifndef ALIFLATESDVERTEX_H
2 #define ALIFLATESDVERTEX_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice *
6 * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli */
9 * >> Flat structure representing a ESD vertex <<
14 #include "AliESDVertex.h"
16 struct AliFlatESDVertex
18 // -- Constructor / Destructors
21 ~AliFlatESDVertex() {}
23 // constructor and method for reinitialisation of virtual table
24 AliFlatESDVertex( AliVConstructorReinitialisationFlag );
25 void Reinitialize() const {} // no virtual table - do nothing
29 Double32_t fPosition[3]; // vertex position
30 Double32_t fCov[6]; // vertex covariance matrix
31 Int_t fNContributors; // # of tracklets/tracks used for the estimate
32 Double32_t fChi2; // chi2 of vertex fit
34 Double32_t fSigma; // track dispersion around found vertex
35 Char_t fID; // ID of this vertex within an ESD event
36 Char_t fBCID; // BC ID assigned to vertex
40 void SetFromESDVertex(const AliESDVertex &v );
41 void GetESDVertex( AliESDVertex &v ) const;
43 Double32_t GetX() const { return fPosition[0]; }
44 Double32_t GetY() const { return fPosition[1]; }
45 Double32_t GetZ() const { return fPosition[2]; }
47 void GetXYZ(Double_t pos[3]) const { for(Int_t j=0; j<3; j++) pos[j]=fPosition[j]; }
48 void SetXYZ(Double_t pos[3]) { for(Int_t j=0; j<3; j++) fPosition[j]=pos[j]; }
50 void SetX(Double_t xVert) {fPosition[0]=xVert; }
51 void SetY(Double_t yVert) {fPosition[1]=yVert; }
52 void SetZ(Double_t zVert) {fPosition[2]=zVert; }
53 void SetNContributors(Int_t nContr) {fNContributors=nContr; }
56 Int_t GetNContributors() const { return fNContributors; }
59 void GetCovarianceMatrix(Double_t covmatrix[6]) const;
60 void SetCovarianceMatrix(const Double_t *) {}
62 Double_t GetChi2perNDF() const {return -999.;}
63 Double_t GetChi2() const {return -999.;}
64 void SetChi2(Double_t ) {}
65 Int_t GetNDF() const {return -999;}
67 void GetSigmaXYZ(Double_t sigma[3]) const;
68 void GetCovMatrix(Double_t covmatrix[6]) const;
69 void GetCovarianceMatrix(Double_t covmatrix[6]) const
70 {GetCovMatrix(covmatrix);}
71 void GetSNR(Double_t snr[3]) const;
72 void SetCovarianceMatrix(const Double_t *cov);
74 Double_t GetXRes() const {return TMath::Sqrt(fCovXX);}
75 Double_t GetYRes() const {return TMath::Sqrt(fCovYY);}
76 Double_t GetZRes() const {return TMath::Sqrt(fCovZZ);}
77 Double_t GetXSNR() const { return fSNR[0]; }
78 Double_t GetYSNR() const { return fSNR[1]; }
79 Double_t GetZSNR() const { return fSNR[2]; }
80 void SetSNR(double snr, int i) {if (i<3 && i>=0) fSNR[i] = snr;}
82 Double_t GetChi2() const { return fChi2; }
83 void SetChi2(Double_t chi) { fChi2 = chi; }
84 Double_t GetChi2toNDF() const
85 { return fChi2/(2.*(Double_t)fNContributors-3.); }
86 Double_t GetChi2perNDF() const { return GetChi2toNDF();}
87 Int_t GetNDF() const {return (2*fNContributors-3);}
89 void Print(Option_t* option = "") const;
90 void PrintStatus() const {Print();}
92 void Reset() { SetToZero(); SetName("Vertex"); }
94 void SetID(Char_t id) {fID=id;}
95 Char_t GetID() const {return fID;}
97 Double_t GetWDist(const AliESDVertex* v) const;
100 static size_t GetSize() { return sizeof(AliFlatESDVertex); }
104 inline AliFlatESDVertex::AliFlatESDVertex() :
108 for( int i=0; i<3; i++) fPosition[i] = -9999;
109 for( int i=0; i<6; i++) fCov[i] = -9999;
112 inline AliFlatESDVertex::AliFlatESDVertex( AliVConstructorReinitialisationFlag ):
113 fNContributors(fNContributors),
117 for( int i=0; i<3; i++) fPosition[i] = fPosition[i];
118 for( int i=0; i<6; i++) fCov[i] = fCov[i];
121 inline void AliFlatESDVertex::SetFromESDVertex(const AliESDVertex &v )
123 fPosition[0] = v.GetX();
124 fPosition[1] = v.GetY();
125 fPosition[2] = v.GetZ();
127 v.GetCovarianceMatrix( c );
128 for( int i=0; i<6; i++) fCov[i] = c[i];
129 fNContributors = v.GetNContributors();
133 inline void AliFlatESDVertex::GetESDVertex( AliESDVertex &v ) const
136 Double_t p[3] = { fPosition[0], fPosition[1], fPosition[2] };
139 for( int i=0; i<6; i++) c[i] = fCov[i];
140 v.SetCovarianceMatrix( c );
141 v.SetNContributors( fNContributors );
145 typedef struct AliFlatESDVertex AliFlatESDVertex;