CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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) /
13  std::sqrt((x1 * x1 + y1 * y1 + z1 * z1) * (x2 * x2 + y2 * y2 + z2 * z2)));
14 }
15 
16 template <typename T1, typename T2>
17 double angle(const T1& t1, const T2& t2) {
18  return angle(t1.x(), t1.y(), t1.z(), t2.x(), t2.y(), t2.z());
19 }
20 
21 #endif
T sqrt(T t)
Definition: SSEVec.h:19
long double T
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11