CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RKCurvilinearDistance.h
Go to the documentation of this file.
1 #ifndef RKCurvilinearDistance_H
2 #define RKCurvilinearDistance_H
3 
6 
7 template <typename T, int N>
8 class RKCurvilinearDistance : public RKDistance<T,N> {
9 public:
10 
11  typedef T Scalar;
13 
15 
16  virtual Scalar operator()( const Vector& a, const Vector& b, const Scalar& s) const {
19 
20  return sqrt( sqr(a(0)-b(0)) + sqr(a(1)-b(1))) + (amom - bmom).mag() / bmom.mag();
21  }
22 
24  Scalar k = sqrt(1 + sqr(v(2)) + sqr(v(3)));
25  Scalar p = std::abs(1 / v(4));
26  Scalar pz = p/k;
27  return Basic3DVector<Scalar>( v(2)*pz, v(3)*pz, pz);
28  }
29 
30  T sqr(const T& t) const {return t*t;}
31 
32 };
33 
34 #endif
Basic3DVector< Scalar > momentum(const Vector &v) const
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
virtual Scalar operator()(const Vector &a, const Vector &b, const Scalar &s) const
#define abs(x)
Definition: mlp_lapack.h:159
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
T sqrt(T t)
Definition: SSEVec.h:28
int k[5][pyjets_maxn]
T sqr(const T &t) const
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
RKSmallVector< T, N > Vector
string s
Definition: asciidump.py:422
mathSSE::Vec4< T > v