CMS 3D CMS Logo

angle.h
Go to the documentation of this file.
1 #ifndef Math_angle_h
2 #define Math_angle_h
3 /* function to compute 3D angle
4  *
5  * Ported from original code in RecoJets
6  * by Fedor Ratnikov, FNAL
7  */
8 #include <cmath>
9 
10 template <class T>
11 T angle (T x1, T y1, T z1, T x2, T y2, T z2) {
12  return std::acos((x1*x2 + y1*y2 + z1*z2)/std::sqrt((x1*x1 + y1*y1 + z1*z1)*(x2*x2 + y2*y2 + z2*z2)));
13 }
14 
15 template<typename T1, typename T2>
16 double angle( const T1 & t1, const T2 & t2 ) {
17  return angle( t1.x(), t1.y(), t1.z(), t2.x(), t2.y(), t2.z() );
18 }
19 
20 #endif
auto const T2 &decltype(t1.eta()) t2
Definition: deltaR.h:16
T sqrt(T t)
Definition: SSEVec.h:18
long double T
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11