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 "AliHLTRootTypes.h"
26 #include "AliHLTTrack.h"
28 // includes for offline comparison, will be removed
29 #include "AliTPCtrack.h"
30 // includes for offline comparison, will be removed
32 class AliHLTSpacePointData;
34 class AliHLTKalmanTrack : public AliHLTTrack {
35 //class AliHLTKalmanTrack {
39 Float_t fP0; // Y-coordinate of a track
40 Float_t fP1; // Z-coordinate of a track
42 Float_t fP3; // tangent of the track momentum dip angle
43 Float_t fP4; // track curvature
45 Float_t fC00; // covariance
46 Float_t fC10, fC11; // matrix
47 Float_t fC20, fC21, fC22; // of the
48 Float_t fC30, fC31, fC32, fC33; // track
49 Float_t fC40, fC41, fC42, fC43, fC44; // parameters
61 virtual ~AliHLTKalmanTrack();
62 Int_t MakeSeed(AliHLTTrack *track, AliHLTSpacePointData *points0, UInt_t pos0, Int_t slice0, AliHLTSpacePointData *points1, UInt_t pos1, Int_t slice1, AliHLTSpacePointData *points2, UInt_t pos2, Int_t slice2);
63 Int_t Init(AliHLTTrack *track, AliHLTSpacePointData *points, UInt_t pos,Int_t slice);
64 Int_t Propagate(AliHLTSpacePointData *points, UInt_t pos, Int_t slice);
65 Int_t UpdateTrack(AliHLTSpacePointData *points, UInt_t pos, Int_t slice);
66 Int_t UpdateTrackII(AliHLTSpacePointData *points, UInt_t pos);
68 // Float_t GetStateVector(Float_t xx[5]) const {
69 void GetStateVector(Float_t xx[5]) const {
77 Float_t GetX0() {return fP0;}
78 Float_t GetX1() {return fP1;}
79 Float_t GetX2() {return fP2;}
80 Float_t GetX3() {return fP3;}
81 Float_t GetX4() {return fP4;}
83 Float_t GetC0() {return fC00;}
84 Float_t GetC1() {return fC10;}
85 Float_t GetC2() {return fC11;}
86 Float_t GetC3() {return fC20;}
87 Float_t GetC4() {return fC21;}
88 Float_t GetC5() {return fC22;}
89 Float_t GetC6() {return fC30;}
90 Float_t GetC7() {return fC31;}
91 Float_t GetC8() {return fC32;}
92 Float_t GetC9() {return fC33;}
93 Float_t GetC10() {return fC40;}
94 Float_t GetC11() {return fC41;}
95 Float_t GetC12() {return fC42;}
96 Float_t GetC13() {return fC43;}
97 Float_t GetC14() {return fC44;}
99 void SetX(Float_t f) {fX = f;}
100 void SetX0(Float_t f) {fP0 = f;}
101 void SetX1(Float_t f) {fP1 = f;}
102 void SetX2(Float_t f) {fP2 = f;}
103 void SetX3(Float_t f) {fP3 = f;}
104 void SetX4(Float_t f) {fP4 = f;}
106 void SetC0(Float_t f) {fC00 = f;}
107 void SetC1(Float_t f) {fC10 = f;}
108 void SetC2(Float_t f) {fC11 = f;}
109 void SetC3(Float_t f) {fC20 = f;}
110 void SetC4(Float_t f) {fC21 = f;}
111 void SetC5(Float_t f) {fC22 = f;}
112 void SetC6(Float_t f) {fC30 = f;}
113 void SetC7(Float_t f) {fC31 = f;}
114 void SetC8(Float_t f) {fC32 = f;}
115 void SetC9(Float_t f) {fC33 = f;}
116 void SetC10(Float_t f) {fC40 = f;}
117 void SetC11(Float_t f) {fC41 = f;}
118 void SetC12(Float_t f) {fC42 = f;}
119 void SetC13(Float_t f) {fC43 = f;}
120 void SetC14(Float_t f) {fC44 = f;}
122 // Float_t GetCovariance(Float_t cc[15]) const {
123 void GetCovariance(Float_t cc[15]) const {
125 cc[1 ]=fC10; cc[2 ]=fC11;
126 cc[3 ]=fC20; cc[4 ]=fC21; cc[5 ]=fC22;
127 cc[6 ]=fC40; cc[7 ]=fC41; cc[8 ]=fC42; cc[9 ]=fC44;
128 cc[10]=fC30; cc[11]=fC31; cc[12]=fC32; cc[13]=fC43; cc[14]=fC33;
131 Float_t GetChisq() {if(!fChisq) return 0; return fChisq;}
132 Float_t GetX() {return fX;}
133 void SetStateVector(Float_t f[5]) {fP0 = f[0]; fP1 = f[1]; fP2 = f[2];
134 fP3 = f[3]; fP4 = f[4];}
135 void SetCovariance(Float_t f[15]) {fC00 = f[0]; fC10 = f[1]; fC11 = f[2];
136 fC21 = f[3]; fC21 = f[4]; fC22 = f[5]; fC30 = f[6]; fC31 = f[7]; fC32 = f[8];
137 fC33 = f[9]; fC40 = f[10]; fC41 = f[11]; fC42 = f[12]; fC43 = f[13];
139 void SetChisq(Float_t f) {fChisq = f;}
140 void SetMaxChi2(Float_t f) {fMaxChi2 = f;}
141 //Float_t GetChisqIncrement(AliHLTSpacePointData *points, UInt_t pos);
142 Float_t GetChisqIncrement(Float_t y, Float_t error_y, Float_t z, Float_t error_z);
143 Float_t f2(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
144 Float_t f3(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t z1,Float_t z2);
145 Float_t f4(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
146 void Set(AliHLTKalmanTrack *track);
148 Int_t GetNHits() const {return fNHits;}
149 void SetNHits(Int_t f) {fNHits = f;}
151 Int_t PropagateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez);
152 Int_t UpdateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez);
153 Float_t GetChisqIncrementOfflineTrack(Double_t y, Double_t z, Double_t ey, Double_t ez);
157 typedef AliHLTKalmanTrack AliL3KalmanTrack; // for backward compatibility