4 //* This file is property of and copyright by the ALICE HLT Project *
5 //* ALICE Experiment at CERN, All rights reserved. *
6 //* See cxx source for full Copyright notice *
9 //* AliHLT3DTrackParam class is under development and currently not in use *
12 #ifndef ALIHLT3DTRACKPARAM_H
13 #define ALIHLT3DTRACKPARAM_H
19 * @class AliHLT3DTrackParam
21 class AliHLT3DTrackParam :public TObject
31 AliHLT3DTrackParam(): fChi2(0),fNDF(0),fSignQ(0){}
33 //* Destructor (empty)
35 virtual ~AliHLT3DTrackParam(){}
44 Double_t GetX() const { return fParam[0]; }
45 Double_t GetY() const { return fParam[1]; }
46 Double_t GetZ() const { return fParam[2]; }
47 Double_t GetPx() const { return fParam[3]; }
48 Double_t GetPy() const { return fParam[4]; }
49 Double_t GetPz() const { return fParam[5]; }
50 Double_t GetChi2() const { return fChi2; }
51 Int_t GetNDF() const { return fNDF; }
52 Int_t GetCharge() const { return fSignQ; }
54 Double_t GetParameter ( Int_t i ) const { return fParam[i]; }
55 Double_t GetCovariance( Int_t i ) const { return fCov[i]; }
56 Double_t GetCovariance( Int_t i, Int_t j ) const { return fCov[( j<=i ) ? i*(i+1)/2+j :j*(j+1)/2+i]; }
62 const Double_t *Param() const { return fParam; }
63 const Double_t *Cov() const { return fCov; }
64 Double_t X() const { return fParam[0]; }
65 Double_t Y() const { return fParam[1]; }
66 Double_t Z() const { return fParam[2]; }
67 Double_t Px() const { return fParam[3]; }
68 Double_t Py() const { return fParam[4]; }
69 Double_t Pz() const { return fParam[5]; }
70 Double_t Chi2() const { return fChi2; }
71 Int_t NDF() const { return fNDF; }
72 Int_t Charge() const { return fSignQ; }
74 //* Accessors with calculations( &value, &estimated sigma )
75 //* error flag returned (0 means no error during calculations)
82 void SetParam( Int_t i, Double_t v ) { fParam[i] = v; }
83 void SetCov( Int_t i, Double_t v ){ fCov[i] = v; }
84 void SetX( Double_t v ) { fParam[0] = v; }
85 void SetY( Double_t v ) { fParam[1] = v; }
86 void SetZ( Double_t v ) { fParam[2] = v; }
87 void SetPx( Double_t v ) { fParam[3] = v; }
88 void SetPy( Double_t v ) { fParam[4] = v; }
89 void SetPz( Double_t v ) { fParam[5] = v; }
90 void SetChi2( Double_t v ) { fChi2 = v; }
91 void SetNDF( Int_t v ) { fNDF = v; }
92 void SetCharge( Int_t v ) { fSignQ = v; }
99 //* Transport utilities
101 Double_t GetDStoPoint( Double_t Bz, const Double_t xyz[3], const Double_t *T0=0 ) const;
103 void TransportToDS( Double_t Bz, Double_t DS, Double_t *T0=0 );
105 void TransportToPoint( Double_t Bz, const Double_t xyz[3], Double_t *T0=0 )
107 TransportToDS( Bz,GetDStoPoint(Bz, xyz, T0), T0 ) ;
110 void TransportToPoint( Double_t Bz, Double_t x, Double_t y, Double_t z, Double_t *T0=0 )
112 Double_t xyz[3] = {x,y,z};
113 TransportToPoint( Bz, xyz, T0 );
118 void InitializeCovarianceMatrix();
120 void GetGlueMatrix( const Double_t p[3], Double_t G[6], const Double_t *T0=0 ) const ;
122 void Filter( const Double_t m[3], const Double_t V[6], const Double_t G[6] );
126 void SetDirection( Double_t Direction[3] );
128 void RotateCoordinateSystem( Double_t alpha );
130 void Get5Parameters( Double_t alpha, Double_t T[6], Double_t C[15] ) const;
134 Double_t fParam[6]; // Parameters ( x, y, z, px, py, pz ): 3-position and 3-momentum
135 Double_t fCov[21]; // Covariance matrix
136 Double_t fChi2; // Chi^2
137 Int_t fNDF; // Number of Degrees of Freedom
138 Int_t fSignQ; // Charge
140 ClassDef(AliHLT3DTrackParam, 1);