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 *
8 //*************************************************************************
10 #ifndef ALIHLTTPCCAPARAM_H
11 #define ALIHLTTPCCAPARAM_H
13 #include "AliHLTTPCCADef.h"
19 * @class ALIHLTTPCCAParam
20 * parameters of the AliHLTTPCCATracker, including geometry information
21 * and some reconstructon constants.
23 * The class is under construction.
26 class AliHLTTPCCAParam
30 #if !defined(HLTCA_GPUCODE)
31 GPUd() AliHLTTPCCAParam();
34 ~AliHLTTPCCAParam(){;}
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 );
42 GPUd() void Slice2Global( Float_t x, Float_t y, Float_t z,
43 Float_t *X, Float_t *Y, Float_t *Z ) const;
45 GPUd() void Global2Slice( Float_t x, Float_t y, Float_t z,
46 Float_t *X, Float_t *Y, Float_t *Z ) const;
49 GPUhd() Int_t ISlice() const { return fISlice;}
50 GPUhd() Int_t NRows() const { return fNRows;}
52 GPUhd() Float_t RowX( Int_t iRow ) const { return fRowX[iRow]; }
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;}
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; }
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; }
101 GPUd() Float_t GetClusterError2(Int_t yz, Int_t type, Float_t z, Float_t angle ) const;
103 void WriteSettings( std::ostream &out ) const;
104 void ReadSettings( std::istream &in );
106 GPUd() void SetParamS0Par(Int_t i, Int_t j, Int_t k, Float_t val ){
107 fParamS0Par[i][j][k] = val;
112 Int_t fISlice; // slice number
113 Int_t fNRows; // number of rows
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)
124 Float_t fHitPickUpFactor;// multiplier for the chi2 window for hit pick up procedure
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
131 Float_t fRowX[200];// X-coordinate of rows
132 Float_t fParamS0Par[2][3][7]; // cluster error parameterization coeficients