261double MdcxHel::Doca(
double wx,
double wy,
double wz,
double xi,
double yi,
double zi ) {
262 double m_2pi = 2.0 *
M_PI;
265 Hep3Vector ivec( xi, yi, zi );
266 wvec = Hep3Vector( wx, wy, wz );
269 double zd, xd = xi, yd = yi;
271 double lnew, t1, t2, dphi, dlen = 1000.0;
276 double circut, circum = 10000.;
278 circut = 0.50 * circum;
286 phi = atan2( t1, t2 );
292 if ( dphi > 0.0 ) dphi -= m_2pi;
293 if ( dphi < -m_2pi ) dphi += m_2pi;
297 if ( dphi < 0.0 ) dphi += m_2pi;
298 if ( dphi > m_2pi ) dphi -= m_2pi;
303 if ( ( lnew > circut ) && (
turnflag ) ) lnew -= circum;
306 xd = xi + (
zh - zi ) * wx / wz;
307 yd = yi + (
zh - zi ) * wy / wz;
311 dlen = fabs( lnew -
len );
317 if ( ( 0.0 == wx ) && ( 0.0 == wy ) )
break;
318 if ( dlen < 0.000001 )
break;
332 Hep3Vector hvec(
xh,
yh,
zh );
335 double lamb = atan(
tanl );
342 Hep3Vector vvec =
wvec.cross(
tvec );
354 f0 = (
f1 - f2 * f3 ) / ( 1.0 - f2 * f2 );
355 samb = ( doca > 0.0 ) ? -1 : +1;
356 double wirephi = atan2( yd, xd );
void decode(const int i, int &i1, int &i2, int &i3, int &i4, int &i5, int &i6, int &n)