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 *
9 #ifndef ALIHLTTPCCATRACKPARAM_H
10 #define ALIHLTTPCCATRACKPARAM_H
12 #include "AliHLTTPCCADef.h"
16 * @class AliHLTTPCCATrackParam
18 * AliHLTTPCCATrackParam class describes the track parametrisation
19 * which is used by the AliHLTTPCCATracker slice tracker.
22 class AliHLTTPCCATrackParam
26 class AliHLTTPCCATrackFitParam
30 fBethe, fE,fTheta2, fEP2, fSigmadE2, fK22,fK33,fK43,fK44;// parameters
33 #if !defined(HLTCA_GPUCODE)
34 AliHLTTPCCATrackParam(): fX(0),fCosPhi(1),fChi2(0), fNDF(0){}
35 ~AliHLTTPCCATrackParam(){}
38 GPUd() Float_t &X() { return fX; }
39 GPUd() Float_t &Y() { return fP[0]; }
40 GPUd() Float_t &Z() { return fP[1]; }
41 GPUd() Float_t &SinPhi(){ return fP[2]; }
42 GPUd() Float_t &DzDs() { return fP[3]; }
43 GPUd() Float_t &Kappa() { return fP[4]; }
44 GPUd() Float_t &CosPhi(){ return fCosPhi; }
45 GPUd() Float_t &Chi2() { return fChi2; }
46 GPUd() Int_t &NDF() { return fNDF; }
48 Float_t &Err2Y() { return fC[0]; }
49 Float_t &Err2Z() { return fC[2]; }
50 Float_t &Err2SinPhi() { return fC[5]; }
51 Float_t &Err2DzDs() { return fC[9]; }
52 Float_t &Err2Kappa() { return fC[14]; }
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; }
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]; }
70 GPUhd() Float_t *Par(){ return fP; }
71 GPUhd() Float_t *Cov(){ return fC; }
73 const Float_t *GetPar() const { return fP; }
74 const Float_t *GetCov() const { return fC; }
76 GPUd() void ConstructXY3( const Float_t x[3], const Float_t y[3], const Float_t sigmaY2[3], Float_t CosPhi0 );
78 GPUd() void ConstructXYZ3( const Float_t p0[5], const Float_t p1[5], const Float_t p2[5],
79 Float_t CosPhi0, Float_t t0[]=0 );
81 GPUd() Float_t GetS( Float_t x, Float_t y ) const;
83 GPUd() void GetDCAPoint( Float_t x, Float_t y, Float_t z,
84 Float_t &px, Float_t &py, Float_t &pz ) const;
86 GPUd() Int_t TransportToX( Float_t X, Float_t maxSinPhi );
87 GPUd() Bool_t TransportToXWithMaterial( Float_t X, AliHLTTPCCATrackFitParam &par );
88 GPUd() Bool_t TransportToXWithMaterial( Float_t X, Float_t Bz );
89 GPUd() Bool_t Rotate( Float_t alpha );
91 GPUd() Bool_t Filter2( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z, Float_t maxSinPhi=.99 );
93 GPUd() Int_t TransportToX0( Float_t X, Float_t /*maxSinPhi*/ );
94 GPUd() Bool_t Filter20( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z, Float_t maxSinPhi=.99 );
96 GPUd() Bool_t Filter2v1( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z, Float_t maxSinPhi=.99 );
97 GPUd() void FilterY( Float_t y, Float_t erry );
98 GPUd() void FilterZ( Float_t z, Float_t errz );
100 GPUd() GPUd() static Float_t ApproximateBetheBloch( Float_t beta2 );
101 GPUd() void CalculateFitParameters( AliHLTTPCCATrackFitParam &par, Float_t Bz, Float_t mass = 0.13957 );
102 GPUd() GPUd() Bool_t CorrectForMeanMaterial( Float_t xOverX0, Float_t xTimesRho, AliHLTTPCCATrackFitParam &par );
103 GPUd() void Print() const;
107 Float_t fX; // x position
108 Float_t fCosPhi; // cosPhi
109 Float_t fP[5]; // 'active' track parameters: Y, Z, SinPhi, DzDs, Kappa
110 Float_t fC[15]; // the covariance matrix for Y,Z,SinPhi,..
111 Float_t fChi2; // the chi^2 value
112 Int_t fNDF; // the Number of Degrees of Freedom