TMBVector3.cpp

Go to the documentation of this file.
00001 
00002 #include "tmb_tree/TMBVector3.hpp"
00003 #include <limits>
00004 #include <cmath>
00005 
00006 
00007 ClassImp(TMBVector3);
00008 
00009 
00010 bool TMBVector3::is_equal(double x1, double x2)
00011 {
00012   if ( x1 == 0.0 ) return x2 == 0.0;
00013   if ( x2 == 0.0 ) return false;
00014   double eps = std::numeric_limits<double>::epsilon();
00015   // 1 tick = 0.5, 2tick = 1, ...
00016   // Choose an intermediate value
00017   double maxdif = 0.7*eps;
00018   double num = x1 - x2;
00019   double den = std::fabs(x1) + std::fabs(x2);
00020   double rat = std::fabs(num/den);
00021   return rat < maxdif;
00022 }
00023 
00024 
00027 Bool_t TMBVector3::is_equal (const TMBVector3 &v) const
00028 {
00029   return is_equal (v.fX, fX) && is_equal (v.fY, fY) && is_equal (v.fZ, fZ);
00030 }
00031 

Generated on Thu Apr 3 04:14:24 2008 for CAF by doxygen 1.3.4