]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/tracking-ca/AliHLTTPCCAParam.cxx
Commit from Sergey:
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCAParam.cxx
1 // @(#) $Id$
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 //***************************************************************************
18
19 #include "AliHLTTPCCAParam.h"
20 #include "TMath.h"
21
22
23 ClassImp(AliHLTTPCCAParam)
24   
25 AliHLTTPCCAParam::AliHLTTPCCAParam()
26   : fISlice(0),fNRows(63),fAlpha(0.174533), fDAlpha(0.349066),
27     fCosAlpha(0), fSinAlpha(0), fAngleMin(0), fAngleMax(0), fRMin(83.65), fRMax(133.3),
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),
30     fCellConnectionAngleXY(45./180.*TMath::Pi()), 
31     fCellConnectionAngleXZ(45./180.*TMath::Pi()),
32     fMaxTrackMatchDRow(4), fTrackConnectionFactor(3.5), fTrackChiCut(3.5), fTrackChi2Cut(10)
33 {
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
77   Update();
78 }
79
80 void AliHLTTPCCAParam::Initialize( Int_t iSlice, 
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
87                                    )
88 {
89   // initialization 
90   fISlice = iSlice;
91   fAlpha = alpha;
92   fDAlpha = dAlpha;
93   fRMin = rMin;
94   fRMax = rMax;
95   fZMin = zMin;
96   fZMax = zMax;
97   fPadPitch = padPitch;
98   fErrY = 1.; // not in use
99   fErrZ = zSigma;
100   fBz = bz;
101   fNRows = nRows;
102   for( Int_t irow=0; irow<nRows; irow++ ){
103     fRowX[irow] = rowX[irow];
104   }
105
106   Update();
107 }
108
109 void 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
120 void AliHLTTPCCAParam::Slice2Global( Float_t x, Float_t y,  Float_t z, 
121                                      Float_t *X, Float_t *Y,  Float_t *Z ) const
122 {  
123   // conversion of coorinates sector->global
124   *X = x*fCosAlpha - y*fSinAlpha;
125   *Y = y*fCosAlpha + x*fSinAlpha;
126   *Z = z;
127 }
128  
129 void AliHLTTPCCAParam::Global2Slice( Float_t X, Float_t Y,  Float_t Z, 
130                                      Float_t *x, Float_t *y,  Float_t *z ) const
131 {
132   // conversion of coorinates global->sector
133   *x = X*fCosAlpha + Y*fSinAlpha;
134   *y = Y*fCosAlpha - X*fSinAlpha;
135   *z = Z;
136 }
137
138 Float_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
147 void 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
185 void 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 }