]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/tracking-ca/AliHLTTPCCATrackParam.h
A tracker update: significant clean up, reorganise of the data structures, p-p track...
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCATrackParam.h
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
12 #include "AliHLTTPCCADef.h"
13
14
15 /**
16  * @class AliHLTTPCCATrackParam
17  *
18  * AliHLTTPCCATrackParam class describes the track parametrisation
19  * which is used by the AliHLTTPCCATracker slice tracker.
20  *
21  */
22 class AliHLTTPCCATrackParam
23 {
24  public:
25
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)
34   AliHLTTPCCATrackParam(): fX(0),fCosPhi(1),fChi2(0), fNDF(0){}
35   ~AliHLTTPCCATrackParam(){}
36 #endif
37
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; }
47
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]; }
53
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
70   GPUhd() Float_t *Par(){ return fP; }
71   GPUhd() Float_t *Cov(){ return fC; }
72
73   const Float_t *GetPar() const { return fP; }
74   const Float_t *GetCov() const { return fC; }
75
76   GPUd() void ConstructXY3( const Float_t x[3], const Float_t y[3], const Float_t sigmaY2[3], Float_t CosPhi0 );
77
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 );
80
81   GPUd() Float_t GetS( Float_t x, Float_t y ) const;
82
83   GPUd() void GetDCAPoint( Float_t x, Float_t y, Float_t z,
84                            Float_t &px, Float_t &py, Float_t &pz ) const;
85   
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 );
90
91   GPUd() Bool_t Filter2( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z, Float_t maxSinPhi=.99 );
92
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 );
95
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 );
99
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;
104
105 private:
106
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
113
114 };
115
116
117 #endif