add fallback compile info of library
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCAParam.cxx
CommitLineData
326c2d4b 1// @(#) $Id$
d54804bf 2//***************************************************************************
3// This file is property of and copyright by the ALICE HLT Project *
4// ALICE Experiment at CERN, All rights reserved. *
5// *
6// Primary Authors: Sergey Gorbunov <sergey.gorbunov@kip.uni-heidelberg.de> *
7// Ivan Kisel <kisel@kip.uni-heidelberg.de> *
8// for The ALICE HLT Project. *
9// *
10// Permission to use, copy, modify and distribute this software and its *
11// documentation strictly for non-commercial purposes is hereby granted *
12// without fee, provided that the above copyright notice appears in all *
13// copies and that both the copyright notice and this permission notice *
14// appear in the supporting documentation. The authors make no claims *
15// about the suitability of this software for any purpose. It is *
16// provided "as is" without express or implied warranty. *
17//***************************************************************************
326c2d4b 18
19#include "AliHLTTPCCAParam.h"
20#include "TMath.h"
21
22
dc4788ec 23ClassImp(AliHLTTPCCAParam)
d54804bf 24
326c2d4b 25AliHLTTPCCAParam::AliHLTTPCCAParam()
d54804bf 26 : fISlice(0),fNRows(63),fAlpha(0.174533), fDAlpha(0.349066),
326c2d4b 27 fCosAlpha(0), fSinAlpha(0), fAngleMin(0), fAngleMax(0), fRMin(83.65), fRMax(133.3),
d54804bf 28 fZMin(0.0529937), fZMax(249.778), fErrX(0), fErrY(0), fErrZ(0.228808),fPadPitch(0.4),fBz(-5.),
29 fYErrorCorrection(0.33), fZErrorCorrection(0.45),
eb30eb49 30 fCellConnectionAngleXY(45./180.*TMath::Pi()),
31 fCellConnectionAngleXZ(45./180.*TMath::Pi()),
d54804bf 32 fMaxTrackMatchDRow(4), fTrackConnectionFactor(3.5), fTrackChiCut(3.5), fTrackChi2Cut(10)
326c2d4b 33{
eb30eb49 34 fParamS0Par[0][0][0] = 0.00047013;
35 fParamS0Par[0][0][1] = 2.00135e-05;
36 fParamS0Par[0][0][2] = 0.0106533;
37 fParamS0Par[0][0][3] = 5.27104e-08;
38 fParamS0Par[0][0][4] = 0.012829;
39 fParamS0Par[0][0][5] = 0.000147125;
40 fParamS0Par[0][0][6] = 4.99432;
41 fParamS0Par[0][1][0] = 0.000883342;
42 fParamS0Par[0][1][1] = 1.07011e-05;
43 fParamS0Par[0][1][2] = 0.0103187;
44 fParamS0Par[0][1][3] = 4.25141e-08;
45 fParamS0Par[0][1][4] = 0.0224292;
46 fParamS0Par[0][1][5] = 8.27274e-05;
47 fParamS0Par[0][1][6] = 4.17233;
48 fParamS0Par[0][2][0] = 0.000745399;
49 fParamS0Par[0][2][1] = 5.62408e-06;
50 fParamS0Par[0][2][2] = 0.0151562;
51 fParamS0Par[0][2][3] = 5.08757e-08;
52 fParamS0Par[0][2][4] = 0.0601004;
53 fParamS0Par[0][2][5] = 7.97129e-05;
54 fParamS0Par[0][2][6] = 4.84913;
55 fParamS0Par[1][0][0] = 0.00215126;
56 fParamS0Par[1][0][1] = 6.82233e-05;
57 fParamS0Par[1][0][2] = 0.0221867;
58 fParamS0Par[1][0][3] = -6.27825e-09;
59 fParamS0Par[1][0][4] = -0.00745378;
60 fParamS0Par[1][0][5] = 0.000172629;
61 fParamS0Par[1][0][6] = 6.24987;
62 fParamS0Par[1][1][0] = 0.00181667;
63 fParamS0Par[1][1][1] = -4.17772e-06;
64 fParamS0Par[1][1][2] = 0.0253429;
65 fParamS0Par[1][1][3] = 1.3011e-07;
66 fParamS0Par[1][1][4] = -0.00362827;
67 fParamS0Par[1][1][5] = 0.00030406;
68 fParamS0Par[1][1][6] = 17.7775;
69 fParamS0Par[1][2][0] = 0.00158251;
70 fParamS0Par[1][2][1] = -3.55911e-06;
71 fParamS0Par[1][2][2] = 0.0247899;
72 fParamS0Par[1][2][3] = 7.20604e-08;
73 fParamS0Par[1][2][4] = 0.0179946;
74 fParamS0Par[1][2][5] = 0.000425504;
75 fParamS0Par[1][2][6] = 20.9294;
76
326c2d4b 77 Update();
78}
79
d54804bf 80void AliHLTTPCCAParam::Initialize( Int_t iSlice,
eb30eb49 81 Int_t nRows, Float_t rowX[],
82 Float_t alpha, Float_t dAlpha,
83 Float_t rMin, Float_t rMax,
84 Float_t zMin, Float_t zMax,
85 Float_t padPitch, Float_t zSigma,
86 Float_t bz
326c2d4b 87 )
88{
89 // initialization
d54804bf 90 fISlice = iSlice;
91 fAlpha = alpha;
92 fDAlpha = dAlpha;
93 fRMin = rMin;
94 fRMax = rMax;
95 fZMin = zMin;
96 fZMax = zMax;
97 fPadPitch = padPitch;
326c2d4b 98 fErrY = 1.; // not in use
d54804bf 99 fErrZ = zSigma;
100 fBz = bz;
101 fNRows = nRows;
102 for( Int_t irow=0; irow<nRows; irow++ ){
103 fRowX[irow] = rowX[irow];
dc4788ec 104 }
105
326c2d4b 106 Update();
107}
108
109void AliHLTTPCCAParam::Update()
110{
111 // update of calculated values
112 fCosAlpha = TMath::Cos(fAlpha);
113 fSinAlpha = TMath::Sin(fAlpha);
114 fAngleMin = fAlpha - fDAlpha/2.;
115 fAngleMax = fAlpha + fDAlpha/2.;
116 fErrX = fPadPitch/TMath::Sqrt(12.);
117 fTrackChi2Cut = fTrackChiCut * fTrackChiCut;
118}
119
eb30eb49 120void AliHLTTPCCAParam::Slice2Global( Float_t x, Float_t y, Float_t z,
121 Float_t *X, Float_t *Y, Float_t *Z ) const
326c2d4b 122{
123 // conversion of coorinates sector->global
124 *X = x*fCosAlpha - y*fSinAlpha;
125 *Y = y*fCosAlpha + x*fSinAlpha;
126 *Z = z;
127}
128
eb30eb49 129void AliHLTTPCCAParam::Global2Slice( Float_t X, Float_t Y, Float_t Z,
130 Float_t *x, Float_t *y, Float_t *z ) const
326c2d4b 131{
132 // conversion of coorinates global->sector
133 *x = X*fCosAlpha + Y*fSinAlpha;
134 *y = Y*fCosAlpha - X*fSinAlpha;
135 *z = Z;
136}
eb30eb49 137
138Float_t AliHLTTPCCAParam::GetClusterError2( Int_t yz, Int_t type, Float_t z, Float_t angle )
139{
140 //* recalculate the cluster error wih respect to the track slope
141 Float_t angle2 = angle*angle;
142 Float_t *c = fParamS0Par[yz][type];
143 Float_t v = c[0] + z*(c[1] + c[3]*z) + angle2*(c[2] + angle2*c[4] + c[5]*z );
144 return TMath::Abs(v);
145}
146
147void AliHLTTPCCAParam::WriteSettings( ostream &out )
148{
149 out << fISlice<<endl;
150 out << fNRows<<endl;
151 out << fAlpha<<endl;
152 out << fDAlpha<<endl;
153 out << fCosAlpha<<endl;
154 out << fSinAlpha<<endl;
155 out << fAngleMin<<endl;
156 out << fAngleMax<<endl;
157 out << fRMin<<endl;
158 out << fRMax<<endl;
159 out << fZMin<<endl;
160 out << fZMax<<endl;
161 out << fErrX<<endl;
162 out << fErrY<<endl;
163 out << fErrZ<<endl;
164 out << fPadPitch<<endl;
165 out << fBz<<endl;
166 out << fYErrorCorrection<<endl;
167 out << fZErrorCorrection<<endl;
168 out << fCellConnectionAngleXY<<endl;
169 out << fCellConnectionAngleXZ<<endl;
170 out << fMaxTrackMatchDRow<<endl;
171 out << fTrackConnectionFactor<<endl;
172 out << fTrackChiCut<<endl;
173 out << fTrackChi2Cut<<endl;
174 for( Int_t iRow = 0; iRow<fNRows; iRow++ ){
175 out << fRowX[iRow]<<endl;
176 }
177 out<<endl;
178 for( Int_t i=0; i<2; i++ )
179 for( Int_t j=0; j<3; j++ )
180 for( Int_t k=0; k<7; k++ )
181 out << fParamS0Par[i][j][k]<<endl;
182 out<<endl;
183}
184
185void AliHLTTPCCAParam::ReadSettings( istream &in )
186{
187 in >> fISlice;
188 in >> fNRows;
189 in >> fAlpha;
190 in >> fDAlpha;
191 in >> fCosAlpha;
192 in >> fSinAlpha;
193 in >> fAngleMin;
194 in >> fAngleMax;
195 in >> fRMin;
196 in >> fRMax;
197 in >> fZMin;
198 in >> fZMax;
199 in >> fErrX;
200 in >> fErrY;
201 in >> fErrZ;
202 in >> fPadPitch;
203 in >> fBz;
204 in >> fYErrorCorrection;
205 in >> fZErrorCorrection;
206 in >> fCellConnectionAngleXY;
207 in >> fCellConnectionAngleXZ;
208 in >> fMaxTrackMatchDRow;
209 in >> fTrackConnectionFactor;
210 in >> fTrackChiCut;
211 in >> fTrackChi2Cut;
212 for( Int_t iRow = 0; iRow<fNRows; iRow++ ){
213 in >> fRowX[iRow];
214 }
215 for( Int_t i=0; i<2; i++ )
216 for( Int_t j=0; j<3; j++ )
217 for( Int_t k=0; k<7; k++ )
218 in >> fParamS0Par[i][j][k];
219}