]>
Commit | Line | Data |
---|---|---|
d54804bf | 1 | //-*- Mode: C++ -*- |
2 | // $Id$ | |
3 | ||
4 | //* This file is property of and copyright by the ALICE HLT Project * | |
5 | //* ALICE Experiment at CERN, All rights reserved. * | |
6 | //* See cxx source for full Copyright notice * | |
7 | ||
8 | ||
9 | #ifndef ALIHLTTPCCATRACKPARAM_H | |
10 | #define ALIHLTTPCCATRACKPARAM_H | |
11 | ||
00d07bcd | 12 | #include "AliHLTTPCCADef.h" |
d54804bf | 13 | |
eb30eb49 | 14 | |
d54804bf | 15 | /** |
16 | * @class AliHLTTPCCATrackParam | |
17 | * | |
18 | * AliHLTTPCCATrackParam class describes the track parametrisation | |
19 | * which is used by the AliHLTTPCCATracker slice tracker. | |
20 | * | |
21 | */ | |
d54804bf | 22 | class AliHLTTPCCATrackParam |
23 | { | |
24 | public: | |
25 | ||
00d07bcd | 26 | class AliHLTTPCCATrackFitParam |
27 | { | |
28 | public: | |
29 | Float_t | |
30 | fBethe, fE,fTheta2, fEP2, fSigmadE2, fK22,fK33,fK43,fK44;// parameters | |
31 | }; | |
32 | ||
33 | #if !defined(HLTCA_GPUCODE) | |
d54804bf | 34 | AliHLTTPCCATrackParam(): fX(0),fCosPhi(1),fChi2(0), fNDF(0){} |
00d07bcd | 35 | ~AliHLTTPCCATrackParam(){} |
36 | #endif | |
37 | ||
693d2443 | 38 | GPUd() Float_t X() const { return fX; } |
39 | GPUd() Float_t Y() const { return fP[0]; } | |
40 | GPUd() Float_t Z() const { return fP[1]; } | |
41 | GPUd() Float_t SinPhi()const { return fP[2]; } | |
42 | GPUd() Float_t DzDs() const { return fP[3]; } | |
43 | GPUd() Float_t Kappa() const { return fP[4]; } | |
44 | GPUd() Float_t CosPhi()const { return fCosPhi; } | |
45 | GPUd() Float_t Chi2() const { return fChi2; } | |
46 | GPUd() Int_t NDF() const { return fNDF; } | |
47 | ||
48 | Float_t Err2Y() const { return fC[0]; } | |
49 | Float_t Err2Z() const { return fC[2]; } | |
50 | Float_t Err2SinPhi() const { return fC[5]; } | |
51 | Float_t Err2DzDs() const { return fC[9]; } | |
52 | Float_t Err2Kappa() const { return fC[14]; } | |
d54804bf | 53 | |
00d07bcd | 54 | GPUd() Float_t GetX() const { return fX; } |
55 | GPUd() Float_t GetY() const { return fP[0]; } | |
56 | GPUd() Float_t GetZ() const { return fP[1]; } | |
57 | GPUd() Float_t GetSinPhi() const { return fP[2]; } | |
58 | GPUd() Float_t GetDzDs() const { return fP[3]; } | |
59 | GPUd() Float_t GetKappa() const { return fP[4]; } | |
60 | GPUd() Float_t GetCosPhi() const { return fCosPhi; } | |
61 | GPUd() Float_t GetChi2() const { return fChi2; } | |
62 | GPUd() Int_t GetNDF() const { return fNDF; } | |
63 | ||
64 | GPUd() Float_t GetErr2Y() const { return fC[0]; } | |
65 | GPUd() Float_t GetErr2Z() const { return fC[2]; } | |
66 | GPUd() Float_t GetErr2SinPhi() const { return fC[5]; } | |
67 | GPUd() Float_t GetErr2DzDs() const { return fC[9]; } | |
68 | GPUd() Float_t GetErr2Kappa() const { return fC[14]; } | |
69 | ||
693d2443 | 70 | GPUhd() const Float_t *Par() const { return fP; } |
71 | GPUhd() const Float_t *Cov() const { return fC; } | |
d54804bf | 72 | |
eb30eb49 | 73 | const Float_t *GetPar() const { return fP; } |
74 | const Float_t *GetCov() const { return fC; } | |
75 | ||
693d2443 | 76 | GPUhd() void SetPar( Int_t i, Float_t v ){ fP[i] = v; } |
77 | GPUhd() void SetCov( Int_t i, Float_t v ){ fC[i] = v; } | |
78 | ||
79 | GPUd() void SetX( Float_t v ) { fX = v; } | |
80 | GPUd() void SetY( Float_t v ) { fP[0] = v; } | |
81 | GPUd() void SetZ( Float_t v ) { fP[1] = v; } | |
82 | GPUd() void SetSinPhi( Float_t v ){ fP[2] = v; } | |
83 | GPUd() void SetDzDs( Float_t v ) { fP[3] = v; } | |
84 | GPUd() void SetKappa( Float_t v ) { fP[4] = v; } | |
85 | GPUd() void SetCosPhi( Float_t v ){ fCosPhi = v; } | |
86 | GPUd() void SetChi2( Float_t v ) { fChi2 = v; } | |
87 | GPUd() void SetNDF( Int_t v ) { fNDF = v; } | |
88 | ||
89 | ||
90 | GPUd() Float_t GetDist2( const AliHLTTPCCATrackParam &t ) const; | |
91 | GPUd() Float_t GetDistXZ2( const AliHLTTPCCATrackParam &t ) const; | |
92 | ||
00d07bcd | 93 | GPUd() void ConstructXY3( const Float_t x[3], const Float_t y[3], const Float_t sigmaY2[3], Float_t CosPhi0 ); |
d54804bf | 94 | |
00d07bcd | 95 | GPUd() void ConstructXYZ3( const Float_t p0[5], const Float_t p1[5], const Float_t p2[5], |
96 | Float_t CosPhi0, Float_t t0[]=0 ); | |
d54804bf | 97 | |
00d07bcd | 98 | GPUd() Float_t GetS( Float_t x, Float_t y ) const; |
d54804bf | 99 | |
00d07bcd | 100 | GPUd() void GetDCAPoint( Float_t x, Float_t y, Float_t z, |
101 | Float_t &px, Float_t &py, Float_t &pz ) const; | |
d54804bf | 102 | |
00d07bcd | 103 | GPUd() Int_t TransportToX( Float_t X, Float_t maxSinPhi ); |
693d2443 | 104 | GPUd() Int_t TransportToX( Float_t X, AliHLTTPCCATrackParam &t0, Float_t maxSinPhi ); |
105 | ||
00d07bcd | 106 | GPUd() Bool_t TransportToXWithMaterial( Float_t X, AliHLTTPCCATrackFitParam &par ); |
693d2443 | 107 | GPUd() Bool_t TransportToXWithMaterial( Float_t X, AliHLTTPCCATrackParam &t0, AliHLTTPCCATrackFitParam &par ); |
00d07bcd | 108 | GPUd() Bool_t TransportToXWithMaterial( Float_t X, Float_t Bz ); |
693d2443 | 109 | GPUd() Bool_t Rotate( Float_t alpha, Float_t maxSinPhi=.99 ); |
110 | GPUd() Bool_t RotateNoCos( Float_t alpha, AliHLTTPCCATrackParam &t0, Float_t maxSinPhi=.99 ); | |
d54804bf | 111 | |
00d07bcd | 112 | GPUd() Bool_t Filter2( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z, Float_t maxSinPhi=.99 ); |
693d2443 | 113 | GPUd() Bool_t Filter2NoCos( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z ); |
4687b8fc | 114 | |
693d2443 | 115 | GPUd() Int_t TransportToX0( Float_t X, Float_t sinPhi, Float_t cosPhi ); |
116 | GPUd() Int_t TransportToX0( Float_t X, Float_t maxSinPhi ); | |
4687b8fc | 117 | GPUd() Bool_t Filter20( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z, Float_t maxSinPhi=.99 ); |
693d2443 | 118 | GPUd() Bool_t Filter200( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z ); |
4687b8fc | 119 | |
00d07bcd | 120 | GPUd() Bool_t Filter2v1( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z, Float_t maxSinPhi=.99 ); |
121 | GPUd() void FilterY( Float_t y, Float_t erry ); | |
122 | GPUd() void FilterZ( Float_t z, Float_t errz ); | |
eb30eb49 | 123 | |
00d07bcd | 124 | GPUd() GPUd() static Float_t ApproximateBetheBloch( Float_t beta2 ); |
125 | GPUd() void CalculateFitParameters( AliHLTTPCCATrackFitParam &par, Float_t Bz, Float_t mass = 0.13957 ); | |
126 | GPUd() GPUd() Bool_t CorrectForMeanMaterial( Float_t xOverX0, Float_t xTimesRho, AliHLTTPCCATrackFitParam &par ); | |
127 | GPUd() void Print() const; | |
d54804bf | 128 | |
00d07bcd | 129 | private: |
d54804bf | 130 | |
131 | Float_t fX; // x position | |
132 | Float_t fCosPhi; // cosPhi | |
133 | Float_t fP[5]; // 'active' track parameters: Y, Z, SinPhi, DzDs, Kappa | |
134 | Float_t fC[15]; // the covariance matrix for Y,Z,SinPhi,.. | |
135 | Float_t fChi2; // the chi^2 value | |
136 | Int_t fNDF; // the Number of Degrees of Freedom | |
137 | ||
d54804bf | 138 | }; |
139 | ||
140 | ||
141 | #endif |