]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/kalman/AliL3KalmanTrack.h
Added Gautes changes from Bergen.
[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();
de3c3890 62Int_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