Revision: | 1.1 |
Committed: | Tue Nov 11 23:01:22 2008 UTC (16 years, 5 months ago) by kukartse |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | V00-03-01, ZMorph_BASE_20100408, gak040610_morphing, V00-02-02, gak011410, gak010310, ejterm2010_25nov2009, V00-02-01, V00-02-00, gak112409, CMSSW_22X_branch_base, segala101609, V00-01-15, V00-01-14, V00-01-13, V00-01-12, V00-01-11, V00-01-10, gak031009, gak030509, gak022309, gak021209, gak040209, gak012809, V00-01-09, V00-01-08, V00-01-07, V00-01-06, V00-01-05, V00-01-04, V00-00-07, V00-00-06, V00-00-05, V00-00-04, V00-01-03, V00-00-02, V00-00-01, HEAD |
Branch point for: | ZMorph-V00-03-01, CMSSW_22X_branch |
Log Message: | initial creation of a package for LJMET multivariate analysis |
# | User | Rev | Content |
---|---|---|---|
1 | kukartse | 1.1 | |
2 | #include "LJMet/MultivariateAnalysis/interface/TMBVector3.h" | ||
3 | #include <limits> | ||
4 | #include <cmath> | ||
5 | |||
6 | |||
7 | //ClassImp(TMBVector3) | ||
8 | |||
9 | |||
10 | bool TMBVector3::is_equal(double x1, double x2) | ||
11 | { | ||
12 | if ( x1 == 0.0 ) return x2 == 0.0; | ||
13 | if ( x2 == 0.0 ) return false; | ||
14 | double eps = std::numeric_limits<double>::epsilon(); | ||
15 | // 1 tick = 0.5, 2tick = 1, ... | ||
16 | // Choose an intermediate value | ||
17 | double maxdif = 0.7*eps; | ||
18 | double num = x1 - x2; | ||
19 | double den = std::fabs(x1) + std::fabs(x2); | ||
20 | double rat = std::fabs(num/den); | ||
21 | return rat < maxdif; | ||
22 | } | ||
23 | |||
24 | |||
25 | /// Equivalence operator. True if all components are | ||
26 | /// equivalent within machine precision. | ||
27 | Bool_t TMBVector3::is_equal (const TMBVector3 &v) const | ||
28 | { | ||
29 | return is_equal (v.fX, fX) && is_equal (v.fY, fY) && is_equal (v.fZ, fZ); | ||
30 | } | ||
31 |