2 //***************************************************************************
3 // This file is property of and copyright by the ALICE HLT Project *
4 // ALICE Experiment at CERN, All rights reserved. *
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. *
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 //***************************************************************************
19 #include "AliHLTTPCCATrackParam.h"
21 #include "Riostream.h"
23 //ClassImp(AliHLTTPCCATrackParam)
28 // R = 1/TMath::Abs(Kappa);
29 // Xc = X - sin(Phi)/Kappa;
30 // Yc = Y + cos(Phi)/Kappa;
35 void AliHLTTPCCATrackParam::ConstructXY3( const Float_t x[3], const Float_t y[3],
36 const Float_t sigmaY2[3], Float_t CosPhi0 )
38 //* Construct the track in XY plane by 3 points
42 Float_t x1 = x[1] - x0;
43 Float_t y1 = y[1] - y0;
44 Float_t x2 = x[2] - x0;
45 Float_t y2 = y[2] - y0;
47 Float_t a1 = x1*x1 + y1*y1;
48 Float_t a2 = x2*x2 + y2*y2;
49 Float_t a = 2*(x1*y2 - y1*x2);
50 Float_t lx = a1*y2 - a2*y1;
51 Float_t ly = -a1*x2 + a2*x1;
52 Float_t l = TMath::Sqrt(lx*lx + ly*ly);
57 Float_t cosPhi = ly*li;
59 Float_t sinPhi = -lx*li;
62 Float_t dlx = a2 - a1; // D lx / D y0
63 Float_t dly = -a; // D ly / D y0
64 Float_t dA = 2*(x2 - x1); // D a / D y0
65 Float_t dl = (lx*dlx + ly*dly)*li;
67 // D sinPhi,kappa / D y0
69 Float_t d0[2] = { -(dlx*ly-lx*dly)*ly*li3, (dA*l-a*dl)*li2 };
71 // D sinPhi,kappa / D y1
76 dl = (lx*dlx + ly*dly)*li;
78 Float_t d1[2] = { -(dlx*ly-lx*dly)*ly*li3, (dA*l-a*dl)*li2 };
80 // D sinPhi,kappa / D y2
85 dl = (lx*dlx + ly*dly)*li;
87 Float_t d2[2] = { -(dlx*ly-lx*dly)*ly*li3, (dA*l-a*dl)*li2 };
89 if( CosPhi0*cosPhi <0 ){
107 Float_t s0 = sigmaY2[0];
108 Float_t s1 = sigmaY2[1];
109 Float_t s2 = sigmaY2[2];
117 fC[5] = d0[0]*d0[0]*s0 + d1[0]*d1[0]*s1 + d2[0]*d2[0]*s2;
126 fC[12] = d0[0]*d0[1]*s0 + d1[0]*d1[1]*s1 + d2[0]*d2[1]*s2;
128 fC[14] = d0[1]*d0[1]*s0 + d1[1]*d1[1]*s1 + d2[1]*d2[1]*s2;
132 Float_t AliHLTTPCCATrackParam::GetS( Float_t x, Float_t y ) const
134 //* Get XY path length to the given point
136 Float_t k = GetKappa();
137 Float_t ex = GetCosPhi();
138 Float_t ey = GetSinPhi();
141 Float_t dS = x*ex + y*ey;
142 if( TMath::Abs(k)>1.e-4 ) dS = TMath::ATan2( k*dS, 1+k*(x*ey-y*ex) )/k;
146 void AliHLTTPCCATrackParam::GetDCAPoint( Float_t x, Float_t y, Float_t z,
147 Float_t &xp, Float_t &yp, Float_t &zp ) const
149 //* Get the track point closest to the (x,y,z)
153 Float_t k = GetKappa();
154 Float_t ex = GetCosPhi();
155 Float_t ey = GetSinPhi();
158 Float_t ax = dx*k+ey;
159 Float_t ay = dy*k-ex;
160 Float_t a = sqrt( ax*ax+ay*ay );
161 xp = x0 + (dx - ey*( (dx*dx+dy*dy)*k - 2*(-dx*ey+dy*ex) )/(a+1) )/a;
162 yp = y0 + (dy + ex*( (dx*dx+dy*dy)*k - 2*(-dx*ey+dy*ex) )/(a+1) )/a;
163 Float_t s = GetS(x,y);
164 zp = GetZ() + GetDzDs()*s;
165 if( TMath::Abs(k)>1.e-2 ){
166 Float_t dZ = TMath::Abs( GetDzDs()*TMath::TwoPi()/k );
168 zp+= TMath::Nint((z-zp)/dZ)*dZ;
173 void AliHLTTPCCATrackParam::ConstructXYZ3( const Float_t p0[5], const Float_t p1[5],
175 Float_t CosPhi0, Float_t t0[] )
177 //* Construct the track in XYZ by 3 points
179 Float_t px[3] = { p0[0], p1[0], p2[0] };
180 Float_t py[3] = { p0[1], p1[1], p2[1] };
181 Float_t pz[3] = { p0[2], p1[2], p2[2] };
182 Float_t ps2y[3] = { p0[3]*p0[3], p1[3]*p1[3], p2[3]*p2[3] };
183 Float_t ps2z[3] = { p0[4]*p0[4], p1[4]*p1[4], p2[4]*p2[4] };
185 Float_t kold = t0 ?t0[4] :0;
186 ConstructXY3( px, py, ps2y, CosPhi0 );
188 Float_t pS[3] = { GetS(px[0],py[0]), GetS(px[1],py[1]), GetS(px[2],py[2]) };
190 if( TMath::Abs(k)>1.e-2 ){
191 Float_t dS = TMath::Abs( TMath::TwoPi()/k );
192 pS[1]+= TMath::Nint( (pS[0]-pS[1])/dS )*dS; // not more than half turn
193 pS[2]+= TMath::Nint( (pS[1]-pS[2])/dS )*dS;
195 Float_t dZ = TMath::Abs(t0[3]*dS);
196 if( TMath::Abs(dZ)>1. ){
197 Float_t dsDz = 1./t0[3];
198 if( kold*k<0 ) dsDz = -dsDz;
199 Float_t s0 = (pz[0]-t0[1])*dsDz;
200 Float_t s1 = (pz[1]-t0[1])*dsDz;
201 Float_t s2 = (pz[2]-t0[1])*dsDz;
202 pS[0]+= TMath::Nint( (s0-pS[0])/dS )*dS ;
203 pS[1]+= TMath::Nint( (s1-pS[1])/dS )*dS ;
204 pS[2]+= TMath::Nint( (s2-pS[2])/dS )*dS ;
209 Float_t s = pS[0] + pS[1] + pS[2];
210 Float_t z = pz[0] + pz[1] + pz[2];
211 Float_t sz = pS[0]*pz[0] + pS[1]*pz[1] + pS[2]*pz[2];
212 Float_t ss = pS[0]*pS[0] + pS[1]*pS[1] + pS[2]*pS[2];
214 Float_t a = 3*ss-s*s;
215 Z() = (z*ss-sz*s)/a; // z0
216 DzDs() = (3*sz-z*s)/a; // t = dz/ds
218 Float_t dz0[3] = {ss - pS[0]*s,ss - pS[1]*s,ss - pS[2]*s };
219 Float_t dt [3] = {3*pS[0] - s, 3*pS[1] - s, 3*pS[2] - s };
221 fC[2] = (dz0[0]*dz0[0]*ps2z[0] + dz0[1]*dz0[1]*ps2z[1] + dz0[2]*dz0[2]*ps2z[2])/a/a;
222 fC[7]= (dz0[0]*dt [0]*ps2z[0] + dz0[1]*dt [1]*ps2z[1] + dz0[2]*dt [2]*ps2z[2])/a/a;
223 fC[9]= (dt [0]*dt [0]*ps2z[0] + dt [1]*dt [1]*ps2z[1] + dt [2]*dt [2]*ps2z[2])/a/a;
227 Bool_t AliHLTTPCCATrackParam::TransportToX( Float_t x )
229 //* Transport the track parameters to X=x
236 Float_t ex = CosPhi();
237 Float_t ey = SinPhi();
240 Float_t ey1 = k*dx + ey;
242 if( TMath::Abs(ey1)>1 ){ // no intersection -> check the border
243 ey1 = ( ey1>0 ) ?1 :-1;
245 dx = ( TMath::Abs(k)>1.e-4) ? ( (ey1-ey)/k ) :0;
247 Float_t ddx = TMath::Abs(x0+dx - x)*k*k;
248 Float_t hx[] = {0, -k, 1+ey };
249 Float_t sx2 = hx[1]*hx[1]*fC[ 3] + hx[2]*hx[2]*fC[ 5];
250 if( ddx*ddx>3.5*3.5*sx2 ) ret = 0; // x not withing the error
254 ex1 = TMath::Sqrt(1 - ey1*ey1);
255 if( ex<0 ) ex1 = -ex1;
263 if( TMath::Abs(cc)>1.e-4 ) tg = ss/cc; // tan((phi1+phi)/2)
266 Float_t dl = dx*TMath::Sqrt(1+tg*tg);
269 Float_t dSin = dl*k/2;
270 if( dSin > 1 ) dSin = 1;
271 if( dSin <-1 ) dSin = -1;
272 Float_t dS = ( TMath::Abs(k)>1.e-4) ? (2*TMath::ASin(dSin)/k) :dl;
273 Float_t dz = dS*DzDs();
275 Float_t cci = 0, exi = 0, ex1i = 0;
276 if( TMath::Abs(cc)>1.e-4 ) cci = 1./cc;
278 if( TMath::Abs(ex)>1.e-4 ) exi = 1./ex;
280 if( TMath::Abs(ex1)>1.e-4 ) ex1i = 1./ex1;
283 if( !ret ) return ret;
292 Float_t h2 = dx*(1+ ex*ex1 + ey*ey1 )*cci*exi*ex1i;
293 Float_t h4 = dx2*(cc + ss*ey1*ex1i )*cci*cci;
305 Float_t c40 = fC[10];
306 Float_t c41 = fC[11];
307 Float_t c42 = fC[12];
308 Float_t c43 = fC[13];
309 Float_t c44 = fC[14];
311 //Float_t H0[5] = { 1,0, h2, 0, h4 };
312 //Float_t H1[5] = { 0, 1, 0, dS, 0 };
313 //Float_t H2[5] = { 0, 0, 1, 0, dx };
314 //Float_t H3[5] = { 0, 0, 0, 1, 0 };
315 //Float_t H4[5] = { 0, 0, 0, 0, 1 };
318 fC[0]=( c00 + h2*h2*c22 + h4*h4*c44
319 + 2*( h2*c20 + h4*c40 + h2*h4*c42 ) );
321 fC[1]= c10 + h2*c21 + h4*c41 + dS*(c30 + h2*c32 + h4*c43);
322 fC[2]= c11 + 2*dS*c31 + dS*dS*c33;
324 fC[3]= c20 + h2*c22 + h4*c42 + dx*( c40 + h2*c42 + h4*c44);
325 fC[4]= c21 + dS*c32 + dx*(c41 + dS*c43);
326 fC[5]= c22 +2*dx*c42 + dx2*c44;
328 fC[6]= c30 + h2*c32 + h4*c43;
333 fC[10]= c40 + h2*c42 + h4*c44;
334 fC[11]= c41 + dS*c43;
335 fC[12]= c42 + dx*c44;
342 Bool_t AliHLTTPCCATrackParam::TransportToXWithMaterial( Float_t x, Float_t Bz )
344 AliHLTTPCCATrackFitParam par;
345 CalculateFitParameters( par, Bz );
346 return TransportToXWithMaterial(x, par );
350 Bool_t AliHLTTPCCATrackParam::TransportToXWithMaterial( Float_t x, AliHLTTPCCATrackFitParam &par )
352 //* Transport the track parameters to X=x
361 Float_t ex = CosPhi();
362 Float_t ey = SinPhi();
365 Float_t ey1 = k*dx + ey;
367 if( TMath::Abs(ey1)>.99 ){ // no intersection -> check the border
368 ey1 = ( ey1>0 ) ?1 :-1;
370 dx = ( TMath::Abs(k)>1.e-4) ? ( (ey1-ey)/k ) :0;
372 Float_t ddx = TMath::Abs(x0+dx - x)*k*k;
373 Float_t hx[] = {0, -k, 1+ey };
374 Float_t sx2 = hx[1]*hx[1]*fC[ 3] + hx[2]*hx[2]*fC[ 5];
375 if( ddx*ddx>3.5*3.5*sx2 ) ret = 0; // x not withing the error
379 ex1 = TMath::Sqrt(1 - ey1*ey1);
380 if( ex<0 ) ex1 = -ex1;
388 if( TMath::Abs(cc)>1.e-4 ) tg = ss/cc; // tan((phi1+phi)/2)
391 Float_t dl = dx*TMath::Sqrt(1+tg*tg);
394 Float_t dSin = dl*k/2;
395 if( dSin > 1 ) dSin = 1;
396 if( dSin <-1 ) dSin = -1;
397 Float_t dS = ( TMath::Abs(k)>1.e-4) ? (2*TMath::ASin(dSin)/k) :dl;
398 Float_t dz = dS*DzDs();
400 Float_t cci = 0, exi = 0, ex1i = 0;
401 if( TMath::Abs(cc)>1.e-4 ) cci = 1./cc;
403 if( TMath::Abs(ex)>1.e-4 ) exi = 1./ex;
405 if( TMath::Abs(ex1)>1.e-4 ) ex1i = 1./ex1;
408 if( !ret ) return ret;
417 Float_t h2 = dx*(1+ ex*ex1 + ey*ey1 )*cci*exi*ex1i;
418 Float_t h4 = dx2*(cc + ss*ey1*ex1i )*cci*cci;
430 Float_t c40 = fC[10];
431 Float_t c41 = fC[11];
432 Float_t c42 = fC[12];
433 Float_t c43 = fC[13];
434 Float_t c44 = fC[14];
436 //Float_t H0[5] = { 1,0, h2, 0, h4 };
437 //Float_t H1[5] = { 0, 1, 0, dS, 0 };
438 //Float_t H2[5] = { 0, 0, 1, 0, dx };
439 //Float_t H3[5] = { 0, 0, 0, 1, 0 };
440 //Float_t H4[5] = { 0, 0, 0, 0, 1 };
443 fC[0]=( c00 + h2*h2*c22 + h4*h4*c44
444 + 2*( h2*c20 + h4*c40 + h2*h4*c42 ) );
446 fC[1]= c10 + h2*c21 + h4*c41 + dS*(c30 + h2*c32 + h4*c43);
447 fC[2]= c11 + 2*dS*c31 + dS*dS*c33;
449 fC[3]= c20 + h2*c22 + h4*c42 + dx*( c40 + h2*c42 + h4*c44);
450 fC[4]= c21 + dS*c32 + dx*(c41 + dS*c43);
451 fC[5]= c22 +2*dx*c42 + dx2*c44;
453 fC[6]= c30 + h2*c32 + h4*c43;
458 fC[10]= c40 + h2*c42 + h4*c44;
459 fC[11]= c41 + dS*c43;
460 fC[12]= c42 + dx*c44;
464 Float_t d = TMath::Sqrt(dS*dS + dz*dz );
466 if (oldX > GetX() ) d = -d;
469 Float_t radLen=28.94;
470 CorrectForMeanMaterial(d*rho/radLen,d*rho,par);
478 Float_t AliHLTTPCCATrackParam::ApproximateBetheBloch( Float_t beta2 )
480 //------------------------------------------------------------------
481 // This is an approximation of the Bethe-Bloch formula with
482 // the density effect taken into account at beta*gamma > 3.5
483 // (the approximation is reasonable only for solid materials)
484 //------------------------------------------------------------------
485 if (beta2 >= 1) return 0;
487 if (beta2/(1-beta2)>3.5*3.5)
488 return 0.153e-3/beta2*( log(3.5*5940)+0.5*log(beta2/(1-beta2)) - beta2);
489 return 0.153e-3/beta2*(log(5940*beta2/(1-beta2)) - beta2);
493 void AliHLTTPCCATrackParam::CalculateFitParameters( AliHLTTPCCATrackFitParam &par, Float_t Bz, Float_t mass )
497 const Float_t kCLight = 0.000299792458;
498 Float_t c = Bz*kCLight;
499 Float_t p2 = (1.+ fP[3]*fP[3])*c*c;
500 Float_t k2 = fP[4]*fP[4];
501 Float_t beta2= p2 / (p2 + mass*mass*k2);
502 Float_t Bethe = ApproximateBetheBloch(beta2);
504 Float_t P2 = (k2>1.e-8) ?p2/k2 :10000; // impuls 2
506 par.fE = TMath::Sqrt( P2 + mass*mass);
507 par.fTheta2 = 14.1*14.1/(beta2*p2*1e6)*k2;
508 par.fEP2 = par.fE/p2*k2;
510 // Approximate energy loss fluctuation (M.Ivanov)
512 const Float_t knst=0.07; // To be tuned.
513 par.fSigmadE2 = knst*par.fEP2*fP[4];
514 par.fSigmadE2 = par.fSigmadE2 * par.fSigmadE2;
516 par.fK22 = (1. + fP[3]*fP[3]);
517 par.fK33 = par.fK22*par.fK22;
518 par.fK43 = fP[3]*fP[4]*par.fK22;
519 par.fK44 = fP[3]*fP[3]*fP[4]*fP[4];
523 Bool_t AliHLTTPCCATrackParam::CorrectForMeanMaterial( Float_t xOverX0, Float_t xTimesRho, AliHLTTPCCATrackFitParam &par )
525 //------------------------------------------------------------------
526 // This function corrects the track parameters for the crossed material.
527 // "xOverX0" - X/X0, the thickness in units of the radiation length.
528 // "xTimesRho" - is the product length*density (g/cm^2).
529 //------------------------------------------------------------------
533 Float_t &fC40=fC[10];
534 Float_t &fC41=fC[11];
535 Float_t &fC42=fC[12];
536 Float_t &fC43=fC[13];
537 Float_t &fC44=fC[14];
539 //Energy losses************************
541 Float_t dE = par.fBethe*xTimesRho;
542 if ( TMath::Abs(dE) > 0.3*par.fE ) return 0; //30% energy loss is too much!
543 Float_t corr = (1.- par.fEP2*dE);
544 if( corr<0.3 ) return 0;
551 fC44+= par.fSigmadE2*TMath::Abs(dE);
554 //Multiple scattering******************
556 Float_t theta2 = par.fTheta2*TMath::Abs(xOverX0);
557 fC22 += theta2*par.fK22*(1.- fP[2]*fP[2]);
558 fC33 += theta2*par.fK33;
559 fC43 += theta2*par.fK43;
560 fC44 += theta2*par.fK44;
567 #include "Riostream.h"
569 Bool_t AliHLTTPCCATrackParam::Rotate( Float_t alpha )
571 //* Rotate the coordinate system in XY on the angle alpha
573 Float_t cA = TMath::Cos( alpha );
574 Float_t sA = TMath::Sin( alpha );
575 Float_t x = X(), y= Y(), sP= SinPhi(), cP= CosPhi();
576 Float_t cosPhi = cP*cA + sP*sA;
577 Float_t sinPhi =-cP*sA + sP*cA;
579 if( TMath::Abs(sinPhi)>.99 || TMath::Abs(cosPhi)<1.e-2 || TMath::Abs(cP)<1.e-2 ) return 0;
581 Float_t j0 = cP/cosPhi;
582 Float_t j2 = cosPhi/cP;
590 //Float_t J[5][5] = { { j0, 0, 0, 0, 0 }, // Y
591 // { 0, 1, 0, 0, 0 }, // Z
592 // { 0, 0, j2, 0, 0 }, // SinPhi
593 // { 0, 0, 0, 1, 0 }, // DzDs
594 // { 0, 0, 0, 0, 1 } }; // Kappa
595 //cout<<"alpha="<<alpha<<" "<<x<<" "<<y<<" "<<sP<<" "<<cP<<" "<<j0<<" "<<j2<<endl;
596 //cout<<" "<<fC[0]<<" "<<fC[1]<<" "<<fC[6]<<" "<<fC[10]<<" "<<fC[4]<<" "<<fC[5]<<" "<<fC[8]<<" "<<fC[12]<<endl;
608 //cout<<" "<<fC[0]<<" "<<fC[1]<<" "<<fC[6]<<" "<<fC[10]<<" "<<fC[4]<<" "<<fC[5]<<" "<<fC[8]<<" "<<fC[12]<<endl;
613 Bool_t AliHLTTPCCATrackParam::Filter2( Float_t y, Float_t z, Float_t err2Y, Float_t err2Z )
615 //* Add the y,z measurement with the Kalman filter
619 c10 = fC[ 1], c11 = fC[ 2],
620 c20 = fC[ 3], c21 = fC[ 4],
621 c30 = fC[ 6], c31 = fC[ 7],
622 c40 = fC[10], c41 = fC[11];
628 Float_t v[3] = {err2Y, 0, err2Z};
630 Float_t mS[3] = { c00+v[0], c10+v[1], c11+v[2] };
633 Float_t det = (mS[0]*mS[2] - mS[1]*mS[1]);
635 if( det < 1.e-8 ) return 0;
643 Float_t k00, k01 , k10, k11, k20, k21, k30, k31, k40, k41;
645 k00 = c00*mSi[0] + c10*mSi[1]; k01 = c00*mSi[1] + c10*mSi[2];
646 k10 = c10*mSi[0] + c11*mSi[1]; k11 = c10*mSi[1] + c11*mSi[2];
647 k20 = c20*mSi[0] + c21*mSi[1]; k21 = c20*mSi[1] + c21*mSi[2];
648 k30 = c30*mSi[0] + c31*mSi[1]; k31 = c30*mSi[1] + c31*mSi[2] ;
649 k40 = c40*mSi[0] + c41*mSi[1]; k41 = c40*mSi[1] + c41*mSi[2] ;
651 Float_t sinPhi = fP[2] + k20*z0 + k21*z1 ;
652 if( TMath::Abs(sinPhi)>=0.99 ) return 0;
655 fChi2 += ( +(mSi[0]*z0 + mSi[1]*z1 )*z0
656 +(mSi[1]*z0 + mSi[2]*z1 )*z1 );
658 fP[ 0]+= k00*z0 + k01*z1 ;
659 fP[ 1]+= k10*z0 + k11*z1 ;
661 fP[ 3]+= k30*z0 + k31*z1 ;
662 fP[ 4]+= k40*z0 + k41*z1 ;
665 fC[ 0]-= k00*c00 + k01*c10 ;
667 fC[ 1]-= k10*c00 + k11*c10 ;
668 fC[ 2]-= k10*c10 + k11*c11 ;
670 fC[ 3]-= k20*c00 + k21*c10 ;
671 fC[ 4]-= k20*c10 + k21*c11 ;
672 fC[ 5]-= k20*c20 + k21*c21 ;
674 fC[ 6]-= k30*c00 + k31*c10 ;
675 fC[ 7]-= k30*c10 + k31*c11 ;
676 fC[ 8]-= k30*c20 + k31*c21 ;
677 fC[ 9]-= k30*c30 + k31*c31 ;
679 fC[10]-= k40*c00 + k41*c10 ;
680 fC[11]-= k40*c10 + k41*c11 ;
681 fC[12]-= k40*c20 + k41*c21 ;
682 fC[13]-= k40*c30 + k41*c31 ;
683 fC[14]-= k40*c40 + k41*c41 ;
686 CosPhi() = TMath::Sqrt(1-SinPhi()*SinPhi());
688 CosPhi() = -TMath::Sqrt(1-SinPhi()*SinPhi());
693 void AliHLTTPCCATrackParam::FilterY( Float_t y, Float_t erry )
695 //* Add the y measurement with the Kalman filter
707 Float_t s = { c00+erry*erry };
708 if( TMath::Abs(s)<1.e-4 ) return;
717 Float_t k0, k1 , k2, k3, k4;
725 Float_t sinPhi = fP[2] + k2*z0 ;
726 if( TMath::Abs(sinPhi)>=0.99 ) return;
755 CosPhi() = TMath::Sqrt(1-SinPhi()*SinPhi());
757 CosPhi() = -TMath::Sqrt(1-SinPhi()*SinPhi());
762 void AliHLTTPCCATrackParam::FilterZ( Float_t z, Float_t errz )
764 //* Add the z measurement with the Kalman filter
776 Float_t s = c11 + errz*errz;
777 if( TMath::Abs(s)<1.e-4 ) return;
786 Float_t k0, k1 , k2, k3, k4;
794 Float_t sinPhi = fP[2] + k2*z1 ;
795 if( TMath::Abs(sinPhi)>=0.99 ) return;
825 CosPhi() = TMath::Sqrt(1-SinPhi()*SinPhi());
827 CosPhi() = -TMath::Sqrt(1-SinPhi()*SinPhi());
832 void AliHLTTPCCATrackParam::Print() const
834 cout<<"track: "<<GetX()<<" "<<GetY()<<" "<<GetZ()<<" "<<GetSinPhi()<<" "<<GetDzDs()<<" "<<GetKappa()<<endl;
835 cout<<"errs2: "<<GetErr2Y()<<" "<<GetErr2Z()<<" "<<GetErr2SinPhi()<<" "<<GetErr2DzDs()<<" "<<GetErr2Kappa()<<endl;