CMS 3D CMS Logo

RKCartesianDistance.h
Go to the documentation of this file.
1 #ifndef RKCartesianDistance_H
2 #define RKCartesianDistance_H
3 
5 #include "RKDistance.h"
6 #include "RKSmallVector.h"
8 
9 #include <cmath>
10 
12 
13 class dso_internal RKCartesianDistance final : public RKDistance<double,6> {
14 public:
15 
16  typedef double Scalar;
18 
19  ~RKCartesianDistance() override {}
20 
21  Scalar operator()( const Vector& rka, const Vector& rkb, const Scalar& s) const override {
22  CartesianStateAdaptor a(rka), b(rkb);
23 
24  return (a.position()-b.position()).mag() +
25  (a.momentum() - b.momentum()).mag() / b.momentum().mag();
26  }
27 
28 };
29 
30 #endif
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
ROOT::Math::SVector< T, N > RKSmallVector
Definition: RKSmallVector.h:13
Estimator of the distance between two state vectors, e.g. for convergence test.
const Vector3D & momentum() const
Scalar operator()(const Vector &rka, const Vector &rkb, const Scalar &s) const override
double b
Definition: hdecay.h:120
#define dso_internal
double a
Definition: hdecay.h:121
const Vector3D & position() const
RKSmallVector< double, 6 > Vector