]>
Commit | Line | Data |
---|---|---|
3e87ef69 | 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" | |
0bd0c1ef | 27 | |
28 | // includes for offline comparison, will be removed | |
29 | #include "AliTPCtrack.h" | |
30 | // includes for offline comparison, will be removed | |
31 | ||
3e87ef69 | 32 | class AliL3SpacePointData; |
33 | ||
34 | class AliL3KalmanTrack : public AliL3Track { | |
35 | //class AliL3KalmanTrack { | |
36 | ||
37 | private: | |
38 | ||
39 | Float_t fP0; // Y-coordinate of a track | |
40 | Float_t fP1; // Z-coordinate of a track | |
41 | Float_t fP2; // C*x0 | |
42 | Float_t fP3; // tangent of the track momentum dip angle | |
43 | Float_t fP4; // track curvature | |
44 | ||
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 | |
50 | ||
51 | Float_t fChisq; | |
b2a02bce | 52 | Float_t fMaxChi2; |
3e87ef69 | 53 | |
54 | Float_t fX; | |
55 | ||
0a86fbb7 | 56 | Int_t fNHits; |
57 | ||
3e87ef69 | 58 | public: |
59 | ||
60 | AliL3KalmanTrack(); | |
61 | virtual ~AliL3KalmanTrack(); | |
de3c3890 | 62 | Int_t MakeSeed(AliL3Track *track, AliL3SpacePointData *points0, UInt_t pos0, Int_t slice0, AliL3SpacePointData *points1, UInt_t pos1, Int_t slice1, AliL3SpacePointData *points2, UInt_t pos2, Int_t slice2); |
0bd0c1ef | 63 | Int_t Init(AliL3Track *track, AliL3SpacePointData *points, UInt_t pos,Int_t slice); |
64 | Int_t Propagate(AliL3SpacePointData *points, UInt_t pos, Int_t slice); | |
65 | Int_t UpdateTrack(AliL3SpacePointData *points, UInt_t pos, Int_t slice); | |
3e87ef69 | 66 | Int_t UpdateTrackII(AliL3SpacePointData *points, UInt_t pos); |
67 | void AddTrack(); | |
b2a02bce | 68 | // Float_t GetStateVector(Float_t xx[5]) const { |
69 | void GetStateVector(Float_t xx[5]) const { | |
3e87ef69 | 70 | xx[0] = fP0; |
71 | xx[1] = fP1; | |
72 | xx[2] = fP2; | |
73 | xx[3] = fP3; | |
74 | xx[4] = fP4; | |
75 | } | |
0a86fbb7 | 76 | |
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;} | |
82 | ||
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;} | |
98 | ||
0bd0c1ef | 99 | void SetX(Float_t f) {fX = f;} |
0a86fbb7 | 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;} | |
105 | ||
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;} | |
121 | ||
b2a02bce | 122 | // Float_t GetCovariance(Float_t cc[15]) const { |
123 | void GetCovariance(Float_t cc[15]) const { | |
3e87ef69 | 124 | cc[0 ]=fC00; |
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; | |
129 | } | |
130 | ||
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]; | |
138 | fC44 = f[14];} | |
139 | void SetChisq(Float_t f) {fChisq = f;} | |
b2a02bce | 140 | void SetMaxChi2(Float_t f) {fMaxChi2 = f;} |
0bd0c1ef | 141 | //Float_t GetChisqIncrement(AliL3SpacePointData *points, UInt_t pos); |
142 | Float_t GetChisqIncrement(Float_t y, Float_t error_y, Float_t z, Float_t error_z); | |
0a86fbb7 | 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(AliL3KalmanTrack *track); | |
147 | ||
148 | Int_t GetNHits() const {return fNHits;} | |
149 | void SetNHits(Int_t f) {fNHits = f;} | |
0bd0c1ef | 150 | |
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); | |
de3c3890 | 154 | |
3e87ef69 | 155 | }; |
156 | ||
157 | #endif |