3 // ***************************************************************************
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 *
8 // AliHLT3DTrackParam class is under development and currently not in use *
10 //****************************************************************************
12 #ifndef ALIHLT3DTRACKPARAM_H
13 #define ALIHLT3DTRACKPARAM_H
18 * @class AliHLT3DTrackParam
20 class AliHLT3DTrackParam : public TObject
30 AliHLT3DTrackParam(): fChi2( 0 ), fNDF( 0 ), fSignQ( 0 ) {}
32 //* Destructor (empty)
34 virtual ~AliHLT3DTrackParam() {}
43 double GetX() const { return fParam[0]; }
44 double GetY() const { return fParam[1]; }
45 double GetZ() const { return fParam[2]; }
46 double GetPx() const { return fParam[3]; }
47 double GetPy() const { return fParam[4]; }
48 double GetPz() const { return fParam[5]; }
49 double GetChi2() const { return fChi2; }
50 int GetNDF() const { return fNDF; }
51 int GetCharge() const { return fSignQ; }
53 double GetParameter ( int i ) const { return fParam[i]; }
54 double GetCovariance( int i ) const { return fCov[i]; }
55 double GetCovariance( int i, int j ) const { return fCov[( j<=i ) ? i*( i+1 )/2+j :j*( j+1 )/2+i]; }
61 const double *Param() const { return fParam; }
62 const double *Cov() const { return fCov; }
63 double X() const { return fParam[0]; }
64 double Y() const { return fParam[1]; }
65 double Z() const { return fParam[2]; }
66 double Px() const { return fParam[3]; }
67 double Py() const { return fParam[4]; }
68 double Pz() const { return fParam[5]; }
69 double Chi2() const { return fChi2; }
70 int NDF() const { return fNDF; }
71 int Charge() const { return fSignQ; }
73 //* Accessors with calculations( &value, &estimated sigma )
74 //* error flag returned (0 means no error during calculations)
81 void SetParam( int i, double v ) { fParam[i] = v; }
82 void SetCov( int i, double v ) { fCov[i] = v; }
83 void SetX( double v ) { fParam[0] = v; }
84 void SetY( double v ) { fParam[1] = v; }
85 void SetZ( double v ) { fParam[2] = v; }
86 void SetPx( double v ) { fParam[3] = v; }
87 void SetPy( double v ) { fParam[4] = v; }
88 void SetPz( double v ) { fParam[5] = v; }
89 void SetChi2( double v ) { fChi2 = v; }
90 void SetNDF( int v ) { fNDF = v; }
91 void SetCharge( int v ) { fSignQ = v; }
98 //* Transport utilities
100 double GetDStoPoint( double Bz, const double xyz[3], const double *T0 = 0 ) const;
102 void TransportToDS( double Bz, double DS, double *T0 = 0 );
104 void TransportToPoint( double Bz, const double xyz[3], double *T0 = 0 ) {
105 TransportToDS( Bz, GetDStoPoint( Bz, xyz, T0 ), T0 ) ;
108 void TransportToPoint( double Bz, double x, double y, double z, const double *T0 = 0 ) {
109 double xyz[3] = {x, y, z};
110 TransportToPoint( Bz, xyz, T0 );
115 void InitializeCovarianceMatrix();
117 void GetGlueMatrix( const double p[3], double G[6], const double *T0 = 0 ) const ;
119 void Filter( const double m[3], const double V[6], const double G[6] );
123 void SetDirection( double Direction[3] );
125 void RotateCoordinateSystem( double alpha );
127 void Get5Parameters( double alpha, double T[6], double C[15] ) const;
131 double fParam[6]; // Parameters ( x, y, z, px, py, pz ): 3-position and 3-momentum
132 double fCov[21]; // Covariance matrix
133 double fChi2; // Chi^2
134 int fNDF; // Number of Degrees of Freedom
135 int fSignQ; // Charge
137 ClassDef( AliHLT3DTrackParam, 1 );