CMS 3D CMS Logo

RKCartesianDistance.h
Go to the documentation of this file.
1 #ifndef RKCartesianDistance_H
2 #define RKCartesianDistance_H
3 
6 #include "RKDistance.h"
7 #include "RKSmallVector.h"
9 
10 #include <cmath>
11 
13 
14 class dso_internal RKCartesianDistance final : public RKDistance<double, 6> {
15 public:
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() + (a.momentum() - b.momentum()).mag() / b.momentum().mag();
25  }
26 };
27 
28 #endif
ROOT::Math::SVector< T, N > RKSmallVector
Definition: RKSmallVector.h:13
RKSmallVector< double, 6 > Vector
Scalar operator()(const Vector &rka, const Vector &rkb, const Scalar &s) const override
Estimator of the distance between two state vectors, e.g. for convergence test.
#define dso_internal
Definition: Visibility.h:13
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121