]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/kalman/AliL3KalmanTrack.h
Merged HLT tag v1-2 with ALIROOT tag v3-09-Release.
[u/mrichter/AliRoot.git] / HLT / kalman / AliL3KalmanTrack.h
1 // @(#) $Id$
2
3 #ifndef ALIL3_KALMANTRACK
4 #define ALIL3_KALMANTRACK
5
6 /*
7 * The state vector is:
8 *  fP0 (x[0]) : local y-coordinate
9 *  fP1 (x[1]) : local z-coordinate
10 *  fP2 (x[2]) : local sine of track momentum dip angle 
11 *  fP3 (x[3]) : tangent of track momentum dip angle
12 *  fP4 (x[4]) : 1/pt
13 *
14 * The covariance matrix is:
15 *  fC00                     
16 *  fC10 fC11
17 *  fC20 fC21 fC22
18 *  fC30 fC31 fC32 fC33
19 *  fC40 fC41 fC42 fC43 fC44
20 *
21 * To accsess this use: GetStateVector(Float_t xx[5])
22 *                      GetCovariance(Float_t xx[15])              
23 */
24
25 #include "AliL3RootTypes.h"
26 #include "AliL3Track.h"
27 class AliL3SpacePointData;
28
29 class AliL3KalmanTrack : public AliL3Track {
30 //class AliL3KalmanTrack {
31
32  private:
33
34   Float_t fP0;             // Y-coordinate of a track
35   Float_t fP1;             // Z-coordinate of a track
36   Float_t fP2;             // C*x0
37   Float_t fP3;             // tangent of the track momentum dip angle
38   Float_t fP4;             // track curvature
39
40   Float_t fC00;                         // covariance
41   Float_t fC10, fC11;                   // matrix
42   Float_t fC20, fC21, fC22;             // of the
43   Float_t fC30, fC31, fC32, fC33;       // track
44   Float_t fC40, fC41, fC42, fC43, fC44; // parameters
45
46   Float_t fChisq; 
47
48   Float_t fX;
49
50  public:
51
52   AliL3KalmanTrack();
53   virtual ~AliL3KalmanTrack();
54   void Init();
55   Int_t MakeTrackSeed(AliL3SpacePointData *points1, UInt_t pos1, AliL3SpacePointData *points2, UInt_t pos2, AliL3SpacePointData *points3, UInt_t pos3);
56   Int_t Propagate(AliL3SpacePointData *points, UInt_t pos);
57   Int_t UpdateTrack(AliL3SpacePointData *points, UInt_t pos);
58   Int_t UpdateTrackII(AliL3SpacePointData *points, UInt_t pos);
59   void AddTrack();
60   Float_t GetStateVector(Float_t xx[5]) const {
61     xx[0] = fP0;
62     xx[1] = fP1;
63     xx[2] = fP2;
64     xx[3] = fP3;
65     xx[4] = fP4;
66   }
67   Float_t GetCovariance(Float_t cc[15]) const {
68     cc[0 ]=fC00;
69     cc[1 ]=fC10;  cc[2 ]=fC11;
70     cc[3 ]=fC20;  cc[4 ]=fC21;  cc[5 ]=fC22;
71     cc[6 ]=fC40;  cc[7 ]=fC41;  cc[8 ]=fC42;  cc[9 ]=fC44;
72     cc[10]=fC30;  cc[11]=fC31;  cc[12]=fC32;  cc[13]=fC43;  cc[14]=fC33;
73   }
74
75   Float_t GetChisq() {if(!fChisq) return 0; return fChisq;} 
76   Float_t GetX() {return fX;}
77   void SetStateVector(Float_t f[5]) {fP0 = f[0]; fP1 = f[1]; fP2 = f[2]; 
78                                      fP3 = f[3]; fP4 = f[4];}
79   void SetCovariance(Float_t f[15]) {fC00 = f[0];  fC10 = f[1]; fC11 = f[2];
80   fC21 = f[3]; fC21 = f[4]; fC22 = f[5]; fC30 = f[6]; fC31 = f[7]; fC32 = f[8];
81   fC33 = f[9]; fC40 = f[10]; fC41 = f[11]; fC42 = f[12]; fC43 = f[13]; 
82   fC44 = f[14];}
83   void SetChisq(Float_t f) {fChisq = f;}
84
85    Float_t f2(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
86    Float_t f3(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t z1,Float_t z2);
87    Float_t f4(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
88 };
89
90 #endif