]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/tracking-ca/AliHLTTPCCATrackParam.h
Ensure that the ADC array is only called for valid entries (AliTRDmcmSim) and bug...
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCATrackParam.h
CommitLineData
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 22class 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 129private:
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