]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/kalman/AliL3KalmanTrack.h
Merged Cvetans RowHoughTransformer, Anders latest developments in comp
[u/mrichter/AliRoot.git] / HLT / kalman / AliL3KalmanTrack.h
CommitLineData
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 32class AliL3SpacePointData;
33
34class 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();
0bd0c1ef 62 Int_t Init(AliL3Track *track, AliL3SpacePointData *points, UInt_t pos,Int_t slice);
63 Int_t Propagate(AliL3SpacePointData *points, UInt_t pos, Int_t slice);
64 Int_t UpdateTrack(AliL3SpacePointData *points, UInt_t pos, Int_t slice);
3e87ef69 65 Int_t UpdateTrackII(AliL3SpacePointData *points, UInt_t pos);
66 void AddTrack();
b2a02bce 67 // Float_t GetStateVector(Float_t xx[5]) const {
68 void GetStateVector(Float_t xx[5]) const {
3e87ef69 69 xx[0] = fP0;
70 xx[1] = fP1;
71 xx[2] = fP2;
72 xx[3] = fP3;
73 xx[4] = fP4;
74 }
0a86fbb7 75
76 Float_t GetX0() {return fP0;}
77 Float_t GetX1() {return fP1;}
78 Float_t GetX2() {return fP2;}
79 Float_t GetX3() {return fP3;}
80 Float_t GetX4() {return fP4;}
81
82 Float_t GetC0() {return fC00;}
83 Float_t GetC1() {return fC10;}
84 Float_t GetC2() {return fC11;}
85 Float_t GetC3() {return fC20;}
86 Float_t GetC4() {return fC21;}
87 Float_t GetC5() {return fC22;}
88 Float_t GetC6() {return fC30;}
89 Float_t GetC7() {return fC31;}
90 Float_t GetC8() {return fC32;}
91 Float_t GetC9() {return fC33;}
92 Float_t GetC10() {return fC40;}
93 Float_t GetC11() {return fC41;}
94 Float_t GetC12() {return fC42;}
95 Float_t GetC13() {return fC43;}
96 Float_t GetC14() {return fC44;}
97
0bd0c1ef 98 void SetX(Float_t f) {fX = f;}
0a86fbb7 99 void SetX0(Float_t f) {fP0 = f;}
100 void SetX1(Float_t f) {fP1 = f;}
101 void SetX2(Float_t f) {fP2 = f;}
102 void SetX3(Float_t f) {fP3 = f;}
103 void SetX4(Float_t f) {fP4 = f;}
104
105 void SetC0(Float_t f) {fC00 = f;}
106 void SetC1(Float_t f) {fC10 = f;}
107 void SetC2(Float_t f) {fC11 = f;}
108 void SetC3(Float_t f) {fC20 = f;}
109 void SetC4(Float_t f) {fC21 = f;}
110 void SetC5(Float_t f) {fC22 = f;}
111 void SetC6(Float_t f) {fC30 = f;}
112 void SetC7(Float_t f) {fC31 = f;}
113 void SetC8(Float_t f) {fC32 = f;}
114 void SetC9(Float_t f) {fC33 = f;}
115 void SetC10(Float_t f) {fC40 = f;}
116 void SetC11(Float_t f) {fC41 = f;}
117 void SetC12(Float_t f) {fC42 = f;}
118 void SetC13(Float_t f) {fC43 = f;}
119 void SetC14(Float_t f) {fC44 = f;}
120
b2a02bce 121 // Float_t GetCovariance(Float_t cc[15]) const {
122 void GetCovariance(Float_t cc[15]) const {
3e87ef69 123 cc[0 ]=fC00;
124 cc[1 ]=fC10; cc[2 ]=fC11;
125 cc[3 ]=fC20; cc[4 ]=fC21; cc[5 ]=fC22;
126 cc[6 ]=fC40; cc[7 ]=fC41; cc[8 ]=fC42; cc[9 ]=fC44;
127 cc[10]=fC30; cc[11]=fC31; cc[12]=fC32; cc[13]=fC43; cc[14]=fC33;
128 }
129
130 Float_t GetChisq() {if(!fChisq) return 0; return fChisq;}
131 Float_t GetX() {return fX;}
132 void SetStateVector(Float_t f[5]) {fP0 = f[0]; fP1 = f[1]; fP2 = f[2];
133 fP3 = f[3]; fP4 = f[4];}
134 void SetCovariance(Float_t f[15]) {fC00 = f[0]; fC10 = f[1]; fC11 = f[2];
135 fC21 = f[3]; fC21 = f[4]; fC22 = f[5]; fC30 = f[6]; fC31 = f[7]; fC32 = f[8];
136 fC33 = f[9]; fC40 = f[10]; fC41 = f[11]; fC42 = f[12]; fC43 = f[13];
137 fC44 = f[14];}
138 void SetChisq(Float_t f) {fChisq = f;}
b2a02bce 139 void SetMaxChi2(Float_t f) {fMaxChi2 = f;}
0bd0c1ef 140 //Float_t GetChisqIncrement(AliL3SpacePointData *points, UInt_t pos);
141 Float_t GetChisqIncrement(Float_t y, Float_t error_y, Float_t z, Float_t error_z);
0a86fbb7 142 Float_t f2(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
143 Float_t f3(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t z1,Float_t z2);
144 Float_t f4(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
145 void Set(AliL3KalmanTrack *track);
146
147 Int_t GetNHits() const {return fNHits;}
148 void SetNHits(Int_t f) {fNHits = f;}
0bd0c1ef 149
150 Int_t PropagateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez);
151 Int_t UpdateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez);
152 Float_t GetChisqIncrementOfflineTrack(Double_t y, Double_t z, Double_t ey, Double_t ez);
3e87ef69 153};
154
155#endif