]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/tracking-ca/AliHLTTPCCAParam.h
e5783d58d2668283cb72eb35e1e9b49e39f4c239
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCAParam.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
10 #ifndef ALIHLTTPCCAPARAM_H
11 #define ALIHLTTPCCAPARAM_H
12
13 #include "AliHLTTPCCADef.h"
14
15 #include <iostream>
16
17
18 /**
19  * @class ALIHLTTPCCAParam
20  * parameters of the AliHLTTPCCATracker, including geometry information
21  * and some reconstructon constants.
22  *
23  * The class is under construction.
24  *
25  */
26 class AliHLTTPCCAParam
27 {
28  public:
29
30 #if !defined(HLTCA_GPUCODE)  
31   GPUd() AliHLTTPCCAParam();
32 #endif
33
34   ~AliHLTTPCCAParam(){;}
35
36   GPUd() void Initialize( Int_t iSlice, Int_t nRows, Float_t rowX[],
37                           Float_t alpha, Float_t dAlpha,
38                           Float_t rMin, Float_t rMax, Float_t zMin, Float_t zMax,
39                           Float_t padPitch, Float_t zSigma, Float_t bz );
40   GPUd() void Update();
41   
42   GPUd() void Slice2Global( Float_t x, Float_t y,  Float_t z, 
43                             Float_t *X, Float_t *Y,  Float_t *Z ) const;
44
45   GPUd() void Global2Slice( Float_t x, Float_t y,  Float_t z, 
46                             Float_t *X, Float_t *Y,  Float_t *Z ) const;
47
48
49   GPUhd() Int_t ISlice() const { return fISlice;}
50   GPUhd() Int_t NRows() const { return fNRows;}
51
52   GPUhd() Float_t RowX( Int_t iRow ) const { return fRowX[iRow]; }  
53
54   GPUd() Float_t Alpha() const { return fAlpha;}
55   GPUd() Float_t DAlpha() const { return fDAlpha;}
56   GPUd() Float_t CosAlpha() const { return fCosAlpha;}
57   GPUd() Float_t SinAlpha() const { return fSinAlpha;}
58   GPUd() Float_t AngleMin() const { return fAngleMin;}
59   GPUd() Float_t AngleMax() const { return fAngleMax;}
60   GPUd() Float_t RMin() const { return fRMin;}
61   GPUd() Float_t RMax() const { return fRMax;}
62   GPUd() Float_t ZMin() const { return fZMin;}
63   GPUd() Float_t ZMax() const { return fZMax;}
64   GPUd() Float_t ErrZ() const { return fErrZ;}
65   GPUd() Float_t ErrX() const { return fErrX;}
66   GPUd() Float_t ErrY() const { return fErrY;}
67   GPUd() Float_t Bz() const { return fBz;}
68
69   GPUd() Float_t TrackConnectionFactor() const { return fTrackConnectionFactor; }
70   GPUd() Float_t TrackChiCut()  const { return fTrackChiCut; }
71   GPUd() Float_t TrackChi2Cut() const { return fTrackChi2Cut; }
72   GPUd() Int_t   MaxTrackMatchDRow() const { return fMaxTrackMatchDRow; }
73   GPUd() Float_t HitPickUpFactor() const { return fHitPickUpFactor; }
74
75
76
77   GPUhd() void SetISlice( Int_t v ){  fISlice = v;}
78   GPUhd() void SetNRows( Int_t v ){  fNRows = v;}  
79   GPUhd() void SetRowX( Int_t iRow, Float_t v ){  fRowX[iRow] = v; }
80   GPUd() void SetAlpha( Float_t v ){  fAlpha = v;}
81   GPUd() void SetDAlpha( Float_t v ){  fDAlpha = v;}
82   GPUd() void SetCosAlpha( Float_t v ){  fCosAlpha = v;}
83   GPUd() void SetSinAlpha( Float_t v ){  fSinAlpha = v;}
84   GPUd() void SetAngleMin( Float_t v ){  fAngleMin = v;}
85   GPUd() void SetAngleMax( Float_t v ){  fAngleMax = v;}
86   GPUd() void SetRMin( Float_t v ){  fRMin = v;}
87   GPUd() void SetRMax( Float_t v ){  fRMax = v;}
88   GPUd() void SetZMin( Float_t v ){  fZMin = v;}
89   GPUd() void SetZMax( Float_t v ){  fZMax = v;}
90   GPUd() void SetErrZ( Float_t v ){  fErrZ = v;}
91   GPUd() void SetErrX( Float_t v ){  fErrX = v;}
92   GPUd() void SetErrY( Float_t v ){  fErrY = v;}
93   GPUd() void SetBz( Float_t v ){  fBz = v;}
94   GPUd() void SetTrackConnectionFactor( Float_t v ){ fTrackConnectionFactor = v;}
95   GPUd() void SetTrackChiCut( Float_t v ) {  fTrackChiCut = v; }
96   GPUd() void SetTrackChi2Cut( Float_t v ){  fTrackChi2Cut = v; }
97   GPUd() void SetMaxTrackMatchDRow( Int_t v ){  fMaxTrackMatchDRow = v; }
98   GPUd() void SetHitPickUpFactor( Float_t v ){  fHitPickUpFactor = v; }
99
100
101   GPUd() Float_t GetClusterError2(Int_t yz, Int_t type, Float_t z, Float_t angle ) const;
102
103   void WriteSettings( std::ostream &out ) const;
104   void ReadSettings( std::istream &in );
105   
106   GPUd() void SetParamS0Par(Int_t i, Int_t j, Int_t k, Float_t val ){
107     fParamS0Par[i][j][k] = val;
108   }
109
110   protected:
111
112   Int_t fISlice; // slice number
113   Int_t fNRows; // number of rows
114
115   Float_t fAlpha, fDAlpha; // slice angle and angular size
116   Float_t fCosAlpha, fSinAlpha;// sign and cosine of the slice angle
117   Float_t fAngleMin, fAngleMax; // minimal and maximal angle
118   Float_t fRMin, fRMax;// slice R range
119   Float_t fZMin, fZMax;// slice Z range
120   Float_t fErrX, fErrY, fErrZ;// default cluster errors
121   Float_t fPadPitch; // pad pitch 
122   Float_t fBz;       // magnetic field value (only constant field can be used)
123
124   Float_t fHitPickUpFactor;// multiplier for the chi2 window for hit pick up procedure
125
126   Int_t   fMaxTrackMatchDRow;// maximal jump in TPC row for connecting track segments
127   Float_t fTrackConnectionFactor; // allowed distance in Chi^2/3.5 for neighbouring tracks
128   Float_t fTrackChiCut; // cut for track Sqrt(Chi2/NDF);
129   Float_t fTrackChi2Cut;// cut for track Chi^2/NDF
130
131   Float_t fRowX[200];// X-coordinate of rows
132   Float_t fParamS0Par[2][3][7];    // cluster error parameterization coeficients
133
134 };
135
136
137 #endif