3 #ifndef ALIL3_KALMANTRACK
4 #define ALIL3_KALMANTRACK
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
14 * The covariance matrix is:
19 * fC40 fC41 fC42 fC43 fC44
21 * To accsess this use: GetStateVector(Float_t xx[5])
22 * GetCovariance(Float_t xx[15])
25 #include "AliL3RootTypes.h"
26 #include "AliL3Track.h"
27 class AliL3SpacePointData;
29 class AliL3KalmanTrack : public AliL3Track {
30 //class AliL3KalmanTrack {
34 Float_t fP0; // Y-coordinate of a track
35 Float_t fP1; // Z-coordinate of a track
37 Float_t fP3; // tangent of the track momentum dip angle
38 Float_t fP4; // track curvature
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
53 virtual ~AliL3KalmanTrack();
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);
60 Float_t GetStateVector(Float_t xx[5]) const {
67 Float_t GetCovariance(Float_t cc[15]) const {
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;
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];
83 void SetChisq(Float_t f) {fChisq = f;}
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);