]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/tracking-ca/AliHLTTPCCAParam.h
Completely reworked version of TPC CA tracker (Sergey)
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCAParam.h
CommitLineData
326c2d4b 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
00d07bcd 11#include "AliHLTTPCCADef.h"
12#include <iostream.h>
13
326c2d4b 14
15/**
16 * @class ALIHLTTPCCAParam
d54804bf 17 * parameters of the AliHLTTPCCATracker, including geometry information
326c2d4b 18 * and some reconstructon constants.
dc4788ec 19 *
20 * The class is under construction.
21 *
326c2d4b 22 */
23class AliHLTTPCCAParam
24{
25 public:
26
00d07bcd 27#if !defined(HLTCA_GPUCODE)
28 GPUd() AliHLTTPCCAParam();
29#endif
30
31 ~AliHLTTPCCAParam(){;}
326c2d4b 32
00d07bcd 33 GPUd() void Initialize( Int_t iSlice, Int_t nRows, Float_t rowX[],
eb30eb49 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 );
00d07bcd 37 GPUd() void Update();
d54804bf 38
00d07bcd 39 GPUd() void Slice2Global( Float_t x, Float_t y, Float_t z,
eb30eb49 40 Float_t *X, Float_t *Y, Float_t *Z ) const;
00d07bcd 41 GPUd() GPUd() void Global2Slice( Float_t x, Float_t y, Float_t z,
eb30eb49 42 Float_t *X, Float_t *Y, Float_t *Z ) const;
00d07bcd 43 GPUhd() Int_t &ISlice(){ return fISlice;}
44 GPUhd() Int_t &NRows(){ return fNRows;}
d54804bf 45
00d07bcd 46 GPUhd() Float_t &RowX( Int_t iRow ){ return fRowX[iRow]; }
326c2d4b 47
00d07bcd 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:
326c2d4b 78
d54804bf 79 Int_t fISlice; // slice number
326c2d4b 80 Int_t fNRows; // number of rows
d54804bf 81
eb30eb49 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
dc4788ec 103
326c2d4b 104};
105
106
107#endif