96 if ( !( *this ).valid( 0 ) )
108 double nr_np( nr * np );
109 double denom( 1.0 - nr_np * nr_np );
115 double fac( 1.0 / sqrt( denom ) );
116 Hep3Vector nx( ( nr - nr_np * np ) * fac );
117 Hep3Vector ny( np.cross( nx ) );
119 ( *this ).set_plane_errs( nx, ny, np );
121 double sigma2( m_err3( 1, 1 ) );
124 error = sqrt( sigma2 ) * fac;
141 const Hep3Vector& nt )
const
155 if ( !( *this ).valid( 1 ) )
161 double nr_np( nr * np );
162 double denom_r( 1.0 - nr_np * nr_np );
167 double nt_np( nt * np );
168 double denom_t( 1.0 - nt_np * nt_np );
169 double fac_r( 1.0 / sqrt( denom_r ) );
170 Hep3Vector nx( ( nr - nr_np * np ) * fac_r );
171 Hep3Vector ny( np.cross( nx ) );
173 ( *this ).set_plane_errs( nx, ny, np );
175 double sigma2( m_err3( 1, 1 ) );
178 m_err2( 1 ) = sqrt( sigma2 ) * fac_r;
180 else { m_err2( 1 ) = 0.0; }
184 double fac_t( 1.0 / sqrt( denom_t ) );
185 sigma2 = m_err3( 2, 2 );
188 m_err2( 2 ) = sqrt( sigma2 ) * fac_t;
190 else { m_err2( 2 ) = 0.0; }
194 m_err2( 2 ) = ( *this ).get_plane_err( np, nt );
199 m_err2( 1 ) = ( *this ).get_plane_err( np, nr );
200 m_err2( 2 ) = ( *this ).get_plane_err( np, nt );
229 Hep3Vector np( pv.unit() );
237 if ( np.x() != 0 || np.y() != 0 )
251 if ( np.y() != 0 || np.z() != 0 )
265 if ( np.z() != 0 || np.x() != 0 )
278 Hep3Vector nt( np.cross( nr ) );
279 const HepVector& err_v = ( *this ).get_plane_errs( np, nr, nt );
280 *m_nv = err_v[0] * nr;
281 *( m_nv + 1 ) = err_v[1] * nt;
300 Hep3Vector np( pv.unit() );
301 Hep3Vector nz( 0.0, 0.0, 1.0 );
302 Hep3Vector nt( ( nz.cross( np ) ).unit() );
303 Hep3Vector nr( nt.cross( np ) );
305 const HepVector& err_v = ( *this ).get_plane_errs( np, nr, nt );
306 *m_nv = err_v[0] * nr;
307 *( m_nv + 1 ) = err_v[1] * nt;