StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
AliHLTTPCCATrackParam.h
1 //-*- Mode: C++ -*-
2 // $Id: AliHLTTPCCATrackParam.h,v 1.1 2016/02/05 23:27:29 fisyak Exp $
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 //*************************************************************************
9 
10 
11 #ifndef ALIHLTTPCCATRACKPARAM_H
12 #define ALIHLTTPCCATRACKPARAM_H
13 #include <string.h>
14 #include "AliHLTTPCCADef.h"
15 #include "AliHLTTPCCAMath.h"
16 #include "AliHLTTPCCATrackParamVector.h"
17 #include "AliHLTTPCCADef.h"
18 
20 #if 0
21 namespace std
22 {
23  template<typename T> struct char_traits;
24  template<typename _CharT, typename _Traits> class basic_istream;
25  typedef basic_istream<char, char_traits<char> > istream;
26  template<typename _CharT, typename _Traits> class basic_ostream;
27  typedef basic_ostream<char, char_traits<char> > ostream;
28 } // namespace std
29 #endif
30 
38 {
39  friend std::istream &operator>>( std::istream &, AliHLTTPCCATrackParam & );
40  friend std::ostream &operator<<( std::ostream &, const AliHLTTPCCATrackParam & );
41  public:
42 
43  AliHLTTPCCATrackParam() { Reset();}
44  AliHLTTPCCATrackParam( const TrackParamVector &v, int i )
45  : fX( v.X()[i] ),
46  fSignCosPhi( v.SignCosPhi()[i] ),
47  fChi2( v.Chi2()[i] ),
48  fNDF( v.NDF()[i] )
49  {
50  for ( int j = 0; j < 5; ++j ) fP[j] = v.Par()[j][i];
51  for ( int j = 0; j < 15; ++j ) fC[j] = v.Cov()[j][i];
52  }
53 
55  float fBethe;
56  float fE;
57  float fTheta2;
58  float fEP2;
59  float fSigmadE2;
60  float fK22;
61  float fK33;
62  float fK43;
63  float fK44;
64  };
65 
66  float X() const { return fX; }
67  float Y() const { return fP[0]; }
68  float Z() const { return fP[1]; }
69  float SinPhi() const { return fP[2]; }
70  float DzDs() const { return fP[3]; }
71  float QPt() const { return fP[4]; }
72 
77  float SignCosPhi() const { return fSignCosPhi; }
78  float Chi2() const { return fChi2; }
79  int NDF() const { return fNDF; }
80 
81  float Err2Y() const { return fC[0]; }
82  float Err2Z() const { return fC[2]; }
83  float Err2SinPhi() const { return fC[5]; }
84  float Err2DzDs() const { return fC[9]; }
85  float Err2QPt() const { return fC[14]; }
86 
87  float GetX() const { return fX; }
88  float GetY() const { return fP[0]; }
89  float GetZ() const { return fP[1]; }
90  float GetSinPhi() const { return fP[2]; }
91  float GetDzDs() const { return fP[3]; }
92  float GetQPt() const { return fP[4]; }
93  float GetSignCosPhi() const { return fSignCosPhi; }
94  float GetChi2() const { return fChi2; }
95  int GetNDF() const { return fNDF; }
96 
97  float GetKappa( float Bz ) const { return fP[4]*Bz; }
98  float GetCosPhiPositive() const { return CAMath::Sqrt( 1 - SinPhi()*SinPhi() ); }
99  float GetCosPhi() const { return fSignCosPhi*CAMath::Sqrt( 1 - SinPhi()*SinPhi() ); }
100 
101  float GetErr2Y() const { return fC[0]; }
102  float GetErr2Z() const { return fC[2]; }
103  float GetErr2SinPhi() const { return fC[5]; }
104  float GetErr2DzDs() const { return fC[9]; }
105  float GetErr2QPt() const { return fC[14]; }
106 
107  const float *Par() const { return fP; }
108  const float *Cov() const { return fC; }
109 
110  const float *GetPar() const { return fP; }
111  const float *GetCov() const { return fC; }
112 
113  void SetPar( int i, float v ) { fP[i] = v; }
114  void SetCov( int i, float v ) { fC[i] = v; }
115 
116  void SetX( float v ) { fX = v; }
117  void SetY( float v ) { fP[0] = v; }
118  void SetZ( float v ) { fP[1] = v; }
119  void SetSinPhi( float v ) { fP[2] = v; }
120  void SetDzDs( float v ) { fP[3] = v; }
121  void SetQPt( float v ) { fP[4] = v; }
122  void SetSignCosPhi( float v ) { fSignCosPhi = v; }
123  void SetChi2( float v ) { fChi2 = v; }
124  void SetNDF( int v ) { fNDF = v; }
125 
126 
127  float GetDist2( const AliHLTTPCCATrackParam &t ) const;
128  float GetDistXZ2( const AliHLTTPCCATrackParam &t ) const;
129 
130 
131  float GetS( float x, float y, float Bz ) const;
132 
133  void GetDCAPoint( float x, float y, float z,
134  float &px, float &py, float &pz, float Bz ) const;
135 
136 
137  bool TransportToX( float x, float Bz, float maxSinPhi = .999 );
138  bool TransportToXWithMaterial( float x, float Bz, float maxSinPhi = .999 );
139 
140  bool TransportToX( float x, AliHLTTPCCATrackLinearisation &t0,
141  float Bz, float maxSinPhi = .999, float *DL = 0 );
142 
143  bool TransportToX( float x, float sinPhi0, float cosPhi0, float Bz, float maxSinPhi = .999 );
144 
145 
146  bool TransportToXWithMaterial( float x, AliHLTTPCCATrackLinearisation &t0,
147  AliHLTTPCCATrackFitParam &par, float Bz, float maxSinPhi = .999 );
148 
149  bool TransportToXWithMaterial( float x,
150  AliHLTTPCCATrackFitParam &par, float Bz, float maxSinPhi = .999 );
151 
152 
153 
154  static float ApproximateBetheBloch( float beta2 );
155  static float BetheBlochGeant( float bg,
156  float kp0 = 2.33,
157  float kp1 = 0.20,
158  float kp2 = 3.00,
159  float kp3 = 173e-9,
160  float kp4 = 0.49848
161  );
162  static float BetheBlochSolid( float bg );
163  static float BetheBlochGas( float bg );
164 
165 
166  void CalculateFitParameters( AliHLTTPCCATrackFitParam &par, float mass = 0.13957 );
167  bool CorrectForMeanMaterial( float xOverX0, float xTimesRho, const AliHLTTPCCATrackFitParam &par );
168 
169  bool Rotate( float alpha, float maxSinPhi = .999 );
170  bool Rotate( float alpha, AliHLTTPCCATrackLinearisation &t0, float maxSinPhi = .999 );
171 
172  void RotateXY( float alpha, float &x, float &y, float &sin ) const;
173  bool Filter( float y, float z, float err2Y, float err2Z, float maxSinPhi = .999 );
174 
175 
176  void Print() const;
177 
178  void ResetCovMatrix()
179  {
180  fC[0] = 10.f;
181  fC[1] = 0.f; fC[2] = 10.f;
182  fC[3] = 0.f; fC[4] = 0.f; fC[5] = 1.f;
183  fC[6] = 0.f; fC[7] = 0.f; fC[8] = 0.f; fC[9] = 1.f;
184  fC[10] = 0.f; fC[11] = 0.f; fC[12] = 0.f; fC[13] = 0.f; fC[14] = 10.f;
185  }
186 
187  AliHLTTPCCATrackParam GetGlobalParam(float alpha) const; // alpha - angle of the current slice
188 
189  void Reset() {
190  fX = 0; fSignCosPhi = 0;
191  for(int i=0; i<5; i++) fP[i] = 0;
192  for(int i=0; i<15; i++) fC[i] = 0;
193  fChi2 = 0; fNDF = 0;
194  }
195 
196  private:
197  float fX; // x position
198  float fSignCosPhi; // sign of cosPhi // phi = arctg (Dy/Dx)
199  float fP[5]; // 'active' track parameters: Y, Z, SinPhi, Dz/Ds (ds = sqrt( dx^2 + dy^2 )), q/Pt
200  float fC[15]; // the covariance matrix for Y,Z,SinPhi,..
201  float fChi2; // the chi^2 value
202  int fNDF; // the Number of Degrees of Freedom
203 };
204 
205 inline void AliHLTTPCCATrackParam::RotateXY( float alpha, float &x, float &y, float &sin ) const
206 {
207  //* Rotate the coordinate system in XY on the angle alpha
208 
209  const float cA = CAMath::Cos( alpha );
210  const float sA = CAMath::Sin( alpha );
211 
212  x = ( X()*cA + Y()*sA );
213  y = ( -X()*sA + Y()*cA );
214  sin = -GetCosPhi() * sA + SinPhi() * cA;
215 
216 }
217 
218 inline bool AliHLTTPCCATrackParam::Filter( float y, float z, float err2Y, float err2Z, float maxSinPhi )
219 {
220  assert( maxSinPhi > 0.f );
221  //* Add the y,z measurement with the Kalman filter
222 
223  const float c00 = fC[0];
224  const float c10 = fC[1];
225  const float c11 = fC[2];
226  const float c20 = fC[3];
227  const float c21 = fC[4];
228 // float c22 = fC[5];
229  const float c30 = fC[6];
230  const float c31 = fC[7];
231 // float c32 = fC[8];
232 // float c33 = fC[9];
233  const float c40 = fC[10];
234  const float c41 = fC[11];
235 // float c42 = fC[12];
236 // float c43 = fC[13];
237 // float c44 = fC[14];
238 
239  float d = 1.f / ( err2Y*err2Z + err2Y*c11 + err2Z*c00 + c00*c11 - c10*c10 );
240  err2Y += c00;
241  err2Z += c11;
242 
243  const float
244  z0 = y - fP[0],
245  z1 = z - fP[1];
246 
247  if ( ISUNLIKELY( err2Y < 1.e-8f ) || ISUNLIKELY( err2Z < 1.e-8f ) ) return 0;
248 
249  const float mS0 = err2Z*d;
250  const float mS1 = -c10*d;
251  const float mS2 = err2Y*d;
252 
253  // K = CHtS
254 
255  const float
256  k00 = c00 * mS0 + c10*mS1, k01 = c00 * mS1 + c10*mS2,
257  k10 = c10 * mS0 + c11*mS1, k11 = c10 * mS1 + c11*mS2,
258  k20 = c20 * mS0 + c21*mS1, k21 = c20 * mS1 + c21*mS2,
259  k30 = c30 * mS0 + c31*mS1, k31 = c30 * mS1 + c31*mS2,
260  k40 = c40 * mS0 + c41*mS1, k41 = c40 * mS1 + c41*mS2;
261 
262  const float sinPhi = fP[2] + k20 * z0 + k21 * z1;
263 
264  if ( ISUNLIKELY( CAMath::Abs( sinPhi ) >= maxSinPhi ) ) return 0;
265 
266  fNDF += 2;
267  fChi2 += mS0 * z0 * z0 + mS2 * z1 * z1 + 2 * z0 * z1 * mS1;
268 
269  fP[ 0] += k00 * z0 + k01 * z1;
270  fP[ 1] += k10 * z0 + k11 * z1;
271  fP[ 2] = sinPhi ;
272  fP[ 3] += k30 * z0 + k31 * z1;
273  fP[ 4] += k40 * z0 + k41 * z1;
274 
275  fC[ 0] -= (k00 * c00 + k01 * c10); //c00
276 
277  fC[ 1] -= (k10 * c00 + k11 * c10); //c10
278  fC[ 2] -= (k10 * c10 + k11 * c11); //c11
279 
280  fC[ 3] -= (k20 * c00 + k21 * c10); //c20
281  fC[ 4] -= (k20 * c10 + k21 * c11); //c21
282  fC[ 5] -= (k20 * c20 + k21 * c21); //c22
283 
284  fC[ 6] -= (k30 * c00 + k31 * c10); //c30
285  fC[ 7] -= (k30 * c10 + k31 * c11); //c31
286  fC[ 8] -= (k30 * c20 + k31 * c21); //c32
287  fC[ 9] -= (k30 * c30 + k31 * c31); //c33
288 
289  fC[10] -= (k40 * c00 + k41 * c10); //c40
290  fC[11] -= (k40 * c10 + k41 * c11); //c41
291  fC[12] -= (k40 * c20 + k41 * c21); //c42
292  fC[13] -= (k40 * c30 + k41 * c31); //c43
293  fC[14] -= (k40 * c40 + k41 * c41); //c44
294 
295  return 1;
296 }
297 
298 inline float AliHLTTPCCATrackParam::ApproximateBetheBloch( float beta2 )
299 {
300  //------------------------------------------------------------------
301  // This is an approximation of the Bethe-Bloch formula with
302  // the density effect taken into account at beta*gamma > 3.5
303  // (the approximation is reasonable only for solid materials)
304  //------------------------------------------------------------------
305  if ( beta2 >= 1 )
306  return 0;
307  else {
308  const float beta2_beta21i = beta2 / ( 1 - beta2 );
309  if ( beta2_beta21i > 12.25 ) // 3.5^2 = 12.25
310  return 0.153e-3 / beta2 * ( 9.94223 + 0.5 * log( beta2_beta21i ) - beta2 ); // log( 3.5*5940 ) = 9.94223
311  else
312  return 0.153e-3 / beta2 * ( 8.6895 + log( beta2_beta21i ) - beta2 ); // log( 5940 ) = 8.6895
313  }
314 }
315 
316 inline void AliHLTTPCCATrackParam::CalculateFitParameters( AliHLTTPCCATrackFitParam &par, float mass )
317 {
318  const float p2 = ( 1. + fP[3] * fP[3] );
319  const float k2 = fP[4] * fP[4];
320  const float mass2 = mass * mass;
321 
322  const float beta2 = p2 / ( p2 + mass2 * k2 );
323 
324  const float pp2 = ( k2 > 1.e-8 ) ? p2 / k2 : 10000; // impuls 2
325 
326  //par.fBethe = BetheBlochGas( pp2/mass2);
327  par.fBethe = ApproximateBetheBloch( pp2 / mass2 );
328  par.fE = CAMath::Sqrt( pp2 + mass2 );
329  par.fTheta2 = 198.81e-6 / ( beta2 * pp2 ); // 14.1^2 * 1e-6
330  par.fEP2 = par.fE / pp2; // have tried reduce number of "/", but it was slower. (may be bacause of additional of constants = memory)
331 
332  // Approximate energy loss fluctuation (M.Ivanov)
333 
334  const float knst = 0.07; // To be tuned.
335  par.fSigmadE2 = knst * par.fEP2 * fP[4];
336  par.fSigmadE2 = par.fSigmadE2 * par.fSigmadE2;
337 
338  par.fK22 = p2;
339  par.fK33 = par.fK22 * par.fK22;
340  par.fK43 = fP[3] * fP[4] * par.fK22;
341  par.fK44 = (p2 - 1.f) * k2;
342 
343 }
344 
345 
346 #include "AliHLTTPCCAMath.h"
347 #include "AliHLTTPCCATrackLinearisation.h"
348 
349 inline bool AliHLTTPCCATrackParam::TransportToX( float x, AliHLTTPCCATrackLinearisation &t0, float Bz, float maxSinPhi, float *DL )
350 {
351  //* Transport the track parameters to X=x, using linearization at t0, and the field value Bz
352  //* maxSinPhi is the max. allowed value for |t0.SinPhi()|
353  //* linearisation of trajectory t0 is also transported to X=x,
354  //* returns 1 if OK
355  //*
356 
357  const float ex = t0.CosPhi();
358  const float ey = t0.SinPhi();
359  const float k = t0.QPt() * Bz;
360  const float dx = x - X();
361 
362  const float ey1 = k * dx + ey;
363 
364  // check for intersection with X=x
365 
366  if ( CAMath::Abs( ey1 ) > maxSinPhi ) return 0;
367 
368  float ex1 = CAMath::Sqrt( 1.f - ey1 * ey1 );
369  if ( ex < 0 ) ex1 = -ex1;
370 
371  const float dx2 = dx * dx;
372  const float ss = ey + ey1;
373  const float cc = ex + ex1;
374 
375  if ( ( CAMath::Abs( cc ) < 1.e-4 || CAMath::Abs( ex ) < 1.e-4 || CAMath::Abs( ex1 ) < 1.e-4 ) ) return 0;
376 
377  const float cci = 1.f / cc;
378  const float exi = 1.f / ex;
379  const float ex1i = 1.f / ex1;
380 
381  const float tg = ss * cci; // tan((phi1+phi)/2)
382 
383  const float dy = dx * tg;
384  float dl = dx * CAMath::Sqrt( 1.f + tg * tg );
385 
386  if ( cc < 0 ) dl = -dl;
387  float dSin = dl * k * 0.5;
388  if ( dSin > 1.f ) dSin = 1.f;
389  if ( dSin < -1.f ) dSin = -1.f;
390  const float dS = ( CAMath::Abs( k ) > 1.e-4 ) ? ( 2 * CAMath::ASin( dSin ) / k ) : dl;
391  const float dz = dS * t0.DzDs();
392 
393  if ( DL ) *DL = -dS * CAMath::Sqrt( 1.f + t0.DzDs() * t0.DzDs() );
394 
395 
396  const float d[3] = { fP[2] - t0.SinPhi(), fP[3] - t0.DzDs(), fP[4] - t0.QPt() };
397 
398  //float H0[5] = { 1,0, h2, 0, h4 };
399  //float H1[5] = { 0, 1, 0, dS, 0 };
400  //float H2[5] = { 0, 0, 1, 0, dxBz };
401  //float H3[5] = { 0, 0, 0, 1, 0 };
402  //float H4[5] = { 0, 0, 0, 0, 1 };
403 
404  const float h2 = dx * ( 1.f + ey * ey1 + ex * ex1 ) * exi * ex1i * cci;
405  const float h4 = dx2 * ( cc + ss * ey1 * ex1i ) * cci * cci * Bz;
406  const float dxBz = dx * Bz;
407 
408  t0.SetCosPhi( ex1 );
409  t0.SetSinPhi( ey1 );
410 
411  fX = X() + dx;
412  fP[0] = Y() + dy + h2 * d[0] + h4 * d[2];
413  fP[1] = Z() + dz + dS * d[1];
414  fP[2] = t0.SinPhi() + d[0] + dxBz * d[2];
415  if(CAMath::Abs(fP[2]) > maxSinPhi) fP[2] = t0.SinPhi();
416 
417 #if 1
418  const float c00 = fC[0];
419  const float c10 = fC[1];
420  const float c11 = fC[2];
421  const float c20 = fC[3];
422  const float c21 = fC[4];
423  const float c22 = fC[5];
424  const float c30 = fC[6];
425  const float c31 = fC[7];
426  const float c32 = fC[8];
427  const float c33 = fC[9];
428  const float c40 = fC[10];
429  const float c41 = fC[11];
430  const float c42 = fC[12];
431  const float c43 = fC[13];
432  const float c44 = fC[14];
433 
434  fC[0] = ( c00 + h2 * h2 * c22 + h4 * h4 * c44
435  + 2.f * ( h2 * c20 + h4 * c40 + h2 * h4 * c42 ) );
436 
437  fC[1] = c10 + h2 * c21 + h4 * c41 + dS * ( c30 + h2 * c32 + h4 * c43 );
438  fC[2] = c11 + 2.f * dS * c31 + dS * dS * c33;
439 
440  fC[3] = c20 + h2 * c22 + h4 * c42 + dxBz * ( c40 + h2 * c42 + h4 * c44 );
441  fC[4] = c21 + dS * c32 + dxBz * ( c41 + dS * c43 );
442  fC[5] = c22 + 2.f * dxBz * c42 + dxBz * dxBz * c44;
443 
444  fC[6] = c30 + h2 * c32 + h4 * c43;
445  fC[7] = c31 + dS * c33;
446  fC[8] = c32 + dxBz * c43;
447  fC[9] = c33;
448 
449  fC[10] = c40 + h2 * c42 + h4 * c44;
450  fC[11] = c41 + dS * c43;
451  fC[12] = c42 + dxBz * c44;
452  fC[13] = c43;
453  fC[14] = c44;
454 #else
455  fC[0] = ( fC[0] + h2 * h2 * fC[5] + h4 * h4 * fC[14]
456  + 2 * ( h2 * fC[3] + h4 * fC[10] + h2 * h4 * fC[12] ) );
457 
458  fC[1] = fC[1] + h2 * fC[4] + h4 * fC[11] + dS * ( fC[6] + h2 * fC[8] + h4 * fC[13] );
459  fC[2] = fC[2] + 2 * dS * fC[7] + dS * dS * fC[9];
460 
461  fC[3] = fC[3] + h2 * fC[5] + h4 * fC[12] + dxBz * ( fC[10] + h2 * fC[12] + h4 * fC[14] );
462  fC[4] = fC[4] + dS * fC[8] + dxBz * ( fC[11] + dS * fC[13] );
463  fC[5] = fC[5] + 2 * dxBz * fC[12] + dxBz * dxBz * fC[14];
464 
465  fC[6] = fC[6] + h2 * fC[8] + h4 * fC[13];
466  fC[7] = fC[7] + dS * fC[9];
467  fC[8] = fC[8] + dxBz * fC[13];
468  fC[9] = fC[9];
469 
470  fC[10] = fC[10] + h2 * fC[12] + h4 * fC[14];
471  fC[11] = fC[11] + dS * fC[13];
472  fC[12] = fC[12] + dxBz * fC[14];
473  fC[13] = fC[13];
474  fC[14] = fC[14];
475 #endif
476 
477 //std::cout << fC[0] << " "<<fC1[0]<<" "<<fC[2] << " "<<fC1[2]<<" "<<fC[5] << " "<<fC1[5]<<" "<<fC[9] << " "<<fC1[9]<<" "<<fC[14] << " "<<fC1[14]<<std::endl;
478  return 1;
479 }
480 
481 inline bool AliHLTTPCCATrackParam::CorrectForMeanMaterial( float xOverX0, float xTimesRho, const AliHLTTPCCATrackFitParam &par )
482 {
483  //------------------------------------------------------------------
484  // This function corrects the track parameters for the crossed material.
485  // "xOverX0" - X/X0, the thickness in units of the radiation length.
486  // "xTimesRho" - is the product length*density (g/cm^2).
487  //------------------------------------------------------------------
488  // float &fC22 = fC[5];
489  // float &fC33 = fC[9];
490  // float &fC40 = fC[10];
491  // float &fC41 = fC[11];
492  // float &fC42 = fC[12];
493  // float &fC43 = fC[13];
494  // float &fC44 = fC[14];
495 
496  //Energy losses************************
497 
498  const float dE = par.fBethe * xTimesRho;
499  if ( CAMath::Abs( dE ) > 0.3 * par.fE ) return 0; //30% energy loss is too much!
500  const float corr = ( 1. - par.fEP2 * dE );
501  if ( corr < 0.3 || corr > 1.3 ) return 0;
502 
503  fP[4] *= corr;
504  fC[10] *= corr;
505  fC[11] *= corr;
506  fC[12] *= corr;
507  fC[13] *= corr;
508  fC[14] *= corr * corr;
509  fC[14] += par.fSigmadE2 * CAMath::Abs( dE );
510 // std::cout << "dE "<<dE<<" corr "<<corr<<" fBethe " <<par.fBethe<<" XxRo "<<xTimesRho<<std::endl;
511 
512  //Multiple scattering******************
513 
514  const float theta2 = par.fTheta2 * CAMath::Abs( xOverX0 );
515  fC[5] += theta2 * par.fK22 * ( 1. - fP[2] * fP[2] );
516  fC[9] += theta2 * par.fK33;
517  fC[13] += theta2 * par.fK43;
518  fC[14] += theta2 * par.fK44;
519 
520  return 1;
521 }
522 
523 inline bool AliHLTTPCCATrackParam::TransportToXWithMaterial( float x, AliHLTTPCCATrackLinearisation &t0, AliHLTTPCCATrackFitParam &par, float Bz, float maxSinPhi )
524 {
525  //* Transport the track parameters to X=x taking into account material budget
526 
527  const float kRho = 1.54e-3;//1.025e-3 ;//0.9e-3;
528 // const float kRadLen = 29.532;//28.94;
529  //const float kRhoOverRadLen = kRho / kRadLen;
530  const float kRhoOverRadLen = 7.68e-5;
531  float dl;
532 
533  if ( !TransportToX( x, t0, Bz, maxSinPhi, &dl ) ) return 0;
534 
535  CorrectForMeanMaterial( dl*kRhoOverRadLen, dl*kRho, par );
536  return 1;
537 }
538 
539 inline bool AliHLTTPCCATrackParam::TransportToXWithMaterial( float x, AliHLTTPCCATrackFitParam &par, float Bz, float maxSinPhi )
540 {
541  //* Transport the track parameters to X=x taking into account material budget
542 
543  AliHLTTPCCATrackLinearisation t0( *this );
544  return TransportToXWithMaterial( x, t0, par, Bz, maxSinPhi );
545 }
546 
547 
548 
550 
551 std::istream &operator>>( std::istream &in, AliHLTTPCCATrackParam &ot );
552 std::ostream &operator<<( std::ostream &out, const AliHLTTPCCATrackParam &ot );
553 
554 #endif
Definition: Filter.h:17