]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/tracking-ca/AliHLTTPCCAParam.h
Completely reworked version of TPC CA tracker (Sergey)
[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 #ifndef ALIHLTTPCCAPARAM_H
9 #define ALIHLTTPCCAPARAM_H
10
11 #include "AliHLTTPCCADef.h"
12 #include <iostream.h>
13
14
15 /**
16  * @class ALIHLTTPCCAParam
17  * parameters of the AliHLTTPCCATracker, including geometry information
18  * and some reconstructon constants.
19  *
20  * The class is under construction.
21  *
22  */
23 class AliHLTTPCCAParam
24 {
25  public:
26
27 #if !defined(HLTCA_GPUCODE)  
28   GPUd() AliHLTTPCCAParam();
29 #endif
30
31   ~AliHLTTPCCAParam(){;}
32
33   GPUd() void Initialize( Int_t iSlice, Int_t nRows, Float_t rowX[],
34                    Float_t alpha, Float_t dAlpha,
35                    Float_t rMin, Float_t rMax, Float_t zMin, Float_t zMax,
36                    Float_t padPitch, Float_t zSigma, Float_t bz );
37   GPUd() void Update();
38   
39   GPUd() void Slice2Global( Float_t x, Float_t y,  Float_t z, 
40                      Float_t *X, Float_t *Y,  Float_t *Z ) const;
41   GPUd() GPUd() void Global2Slice( Float_t x, Float_t y,  Float_t z, 
42                      Float_t *X, Float_t *Y,  Float_t *Z ) const;
43   GPUhd() Int_t &ISlice(){ return fISlice;}
44   GPUhd() Int_t &NRows(){ return fNRows;}
45   
46   GPUhd() Float_t &RowX( Int_t iRow ){ return fRowX[iRow]; }
47   
48   GPUd() Float_t &Alpha(){ return fAlpha;}
49   GPUd() Float_t &DAlpha(){ return fDAlpha;}
50   GPUd() Float_t &CosAlpha(){ return fCosAlpha;}
51   GPUd() Float_t &SinAlpha(){ return fSinAlpha;}
52   GPUd() Float_t &AngleMin(){ return fAngleMin;}
53   GPUd() Float_t &AngleMax(){ return fAngleMax;}
54   GPUd() Float_t &RMin(){ return fRMin;}
55   GPUd() GPUd() Float_t &RMax(){ return fRMax;}
56   GPUd() GPUd() Float_t &ZMin(){ return fZMin;}
57   GPUd() Float_t &ZMax(){ return fZMax;}
58   GPUd() Float_t &ErrZ(){ return fErrZ;}
59   GPUd() Float_t &ErrX(){ return fErrX;}
60   GPUd() Float_t &ErrY(){ return fErrY;}
61   GPUd() Float_t &Bz(){ return fBz;}
62
63   GPUd() Float_t &TrackConnectionFactor(){ return fTrackConnectionFactor; }
64   GPUd() Float_t &TrackChiCut() { return fTrackChiCut; }
65   GPUd() Float_t &TrackChi2Cut(){ return fTrackChi2Cut; }
66   GPUd() Int_t   &MaxTrackMatchDRow(){ return fMaxTrackMatchDRow; }
67   GPUd() Float_t &YErrorCorrection(){ return fYErrorCorrection; }
68   GPUd() Float_t &ZErrorCorrection(){ return fZErrorCorrection; }
69   GPUd() Float_t &CellConnectionAngleXY(){ return fCellConnectionAngleXY; }
70   GPUd() Float_t &CellConnectionAngleXZ(){ return fCellConnectionAngleXZ; }
71
72   GPUd() Float_t GetClusterError2(Int_t yz, Int_t type, Float_t z, Float_t angle ) const;
73
74   void WriteSettings( std::ostream &out ) const;
75   void ReadSettings( std::istream &in );
76
77   protected:
78
79   Int_t fISlice; // slice number
80   Int_t fNRows; // number of rows
81
82   Float_t fAlpha, fDAlpha; // slice angle and angular size
83   Float_t fCosAlpha, fSinAlpha;// sign and cosine of the slice angle
84   Float_t fAngleMin, fAngleMax; // minimal and maximal angle
85   Float_t fRMin, fRMax;// slice R range
86   Float_t fZMin, fZMax;// slice Z range
87   Float_t fErrX, fErrY, fErrZ;// default cluster errors
88   Float_t fPadPitch; // pad pitch 
89   Float_t fBz;       // magnetic field value (only constant field can be used)
90
91   Float_t fYErrorCorrection;// correction factor for Y error of input clusters
92   Float_t fZErrorCorrection;// correction factor for Z error of input clusters
93
94   Float_t fCellConnectionAngleXY; // max phi angle between connected cells
95   Float_t fCellConnectionAngleXZ; // max psi angle between connected cells
96   Int_t   fMaxTrackMatchDRow;// maximal jump in TPC row for connecting track segments
97   Float_t fTrackConnectionFactor; // allowed distance in Chi^2/3.5 for neighbouring tracks
98   Float_t fTrackChiCut; // cut for track Sqrt(Chi2/NDF);
99   Float_t fTrackChi2Cut;// cut for track Chi^2/NDF
100
101   Float_t fRowX[200];// X-coordinate of rows
102   Float_t fParamS0Par[2][3][7];    // cluster error parameterization coeficients
103
104 };
105
106
107 #endif