18 #pragma implementation 
   49   dz = r1 * std::cos(theta1);
 
   50   double rho1 ( r1*std::sin(theta1));
 
   51   dy = rho1 * std::sin (phi1);
 
   52   dx = rho1 * std::cos (phi1);
 
   66   dy = rho1 * std::sin (phi1);
 
   67   dx = rho1 * std::cos (phi1);
 
   76     std::cerr << 
"Hep3Vector::setRhoPhiTheta() - " 
   77       << 
"Attempt set vector components rho, phi, theta with zero rho -- " 
   78       << 
"zero vector is returned, ignoring theta and phi" << std::endl;
 
   92   dz = rho1 / std::tan (theta1);
 
   93   dy = rho1 * std::sin (phi1);
 
   94   dx = rho1 * std::cos (phi1);
 
  103     std::cerr << 
"Hep3Vector::setRhoPhiEta() - " 
  104       << 
"Attempt set vector components rho, phi, eta with zero rho -- " 
  105       << 
"zero vector is returned, ignoring eta and phi" << std::endl;
 
  109   double theta1 (2 * std::atan ( std::exp (-eta1) ));
 
  110   dz = rho1 / std::tan (theta1);
 
  111   dy = rho1 * std::sin (phi1);
 
  112   dx = rho1 * std::cos (phi1);
 
  125   } 
else if ( 
dz < v.
dz ) {
 
  127   } 
else if ( 
dy > v.
dy ) {
 
  129   } 
else if ( 
dy < v.
dy ) {
 
  131   } 
else if ( 
dx > v.
dx ) {
 
  133   } 
else if ( 
dx < v.
dx ) {
 
  170   double v1v2 = std::fabs(
dot(v));
 
  173     return ( (
mag2() == 0) && (v.
mag2() == 0) ) ? 0 : 1;
 
  176   double abscross = v1Xv2.
mag();
 
  177   if ( abscross >= v1v2 ) {
 
  180     return abscross/v1v2;
 
  185                               double epsilon)
 const {
 
  189   static const double TOOBIG = std::pow(2.0,507);
 
  190   static const double SCALE  = std::pow(2.0,-507);
 
  191   double v1v2 = std::fabs(
dot(v));
 
  193     return ( (
mag2() == 0) && (v.
mag2() == 0) );
 
  195   if ( v1v2 >= TOOBIG ) {
 
  199     double x2 = sv1Xsv2.
mag2();
 
  200     double limit = v1v2*SCALE*SCALE;
 
  201     limit = epsilon*epsilon*limit*limit;
 
  202     return ( x2 <= limit );
 
  208   if (  (std::fabs (v1Xv2.
dx) > TOOBIG) ||
 
  209         (std::fabs (v1Xv2.
dy) > TOOBIG) ||
 
  210         (std::fabs (v1Xv2.
dz) > TOOBIG) ) {
 
  214   return ( (v1Xv2.
mag2()) <= ((epsilon * v1v2) * (epsilon * v1v2)) );
 
  222   double v1v2 = std::fabs(
dot(v));
 
  228   double abscross = v1Xv2.
mag();
 
  229   if ( v1v2 >= abscross ) {
 
  232     return v1v2/abscross;
 
  238                  double epsilon)
 const {
 
  242   static const double TOOBIG = std::pow(2.0,507);
 
  243   static const double SCALE = std::pow(2.0,-507);
 
  244   double v1v2 = std::fabs(
dot(v));
 
  246   if ( v1v2 >= TOOBIG ) {
 
  250     double x2 = sv1Xsv2.
mag2();
 
  251     double limit = epsilon*epsilon*
x2;
 
  252     double y2 = v1v2*SCALE*SCALE;
 
  253     return ( y2*y2 <= limit );
 
  259   if (  (std::fabs (eps_v1Xv2.
dx) > TOOBIG) ||
 
  260         (std::fabs (eps_v1Xv2.
dy) > TOOBIG) ||
 
  261         (std::fabs (eps_v1Xv2.
dz) > TOOBIG) ) {
 
  267   return ( v1v2*v1v2 <= eps_v1Xv2.
mag2() );
 
  297   for (k=0; k<8; k++) {
 
  298     value.u.i[k] = negOne.u.i[k] | posTwo.u.i[k];