5#ifndef INDETCONVERSIONFINDERTOOLS_VERTEXPOINTESTIMATOR_H
6#define INDETCONVERSIONFINDERTOOLS_VERTEXPOINTESTIMATOR_H
31 virtual StatusCode
finalize()
override;
42 int& errorcode)
const;
57 static std::vector<std::string>
decorKeys() ;
69 static double areaVar(
double,
double,
double,
double,
double,
double,
double&) ;
70 static double areaVar(
double,
double,
double,
double,
double,
double,
double&,
double&,
double&) ;
72 double,
double,
double,
75 static bool secondDegree(
double,
double,
double,
double&,
double&) ;
76 static double areaTriangle(
double,
double,
double,
double,
double,
double) ;
80 {
this,
"MaxTrkXYDiffAtVtx", {10000., 10000., 10000.},
81 "maximum XY separation, non-intersecting circles"};
83 {
this,
"MaxTrkZDiffAtVtx", {10000., 10000., 10000.},
84 "maximum allowed track Z separation at the vertex"};
86 {
this,
"MaxTrkXYValue", {10000., 10000., 10000.},
87 "maximum allowed vertex radius"};
89 {
this,
"MinArcLength", {-10000., -10000., -10000.},
90 "minimum permitted arc length, track to vertex, depends on the posion of the first measurement"};
92 {
this,
"MaxArcLength", {10000., 10000., 10000.},
93 "maximum permitted arc length, track to vertex, depends on the posion of the first measurement"};
95 {
this,
"MinDeltaR", {-5., -25., -50.},
96 "minimum difference between helix centers"};
98 {
this,
"MaxDeltaR", {5., 10., 10.},
99 "maximum difference between helix centers"};
101 {
this,
"MaxHl", {10000., 10000., 10000.},
"maximum ratio H/l"};
103 {
this,
"MaxPhi", {0.05, 0.1, 0.1},
104 "maximum DPhi at the estimated vertex position"};
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
Scalar deltaR(const MatrixBase< Derived > &vec) const
static double areaVar(double, double, double, double, double, double, double &)
static std::vector< std::string > decorKeys()
Return list of keys used for decorations.
BooleanProperty m_returnOnError
static bool secondDegree(double, double, double, double &, double &)
DoubleArrayProperty m_maxDZ
Amg::Vector3D intersectionImpl(const Trk::Perigee *per1, const Trk::Perigee *per2, unsigned int flag, int &errorcode, float &deltaPhi, float &deltaR) const
internal implementation
static bool circleIntersection(double, double, double, double, double, double, double &, double &, double &, double &)
static const double s_bmagnt
DoubleArrayProperty m_maxHl
virtual StatusCode initialize() override
VertexPointEstimator(const std::string &type, const std::string &name, const IInterface *parent)
DoubleArrayProperty m_minDr
DoubleArrayProperty m_minArcLength
static const InterfaceID & interfaceID()
virtual ~VertexPointEstimator()=default
DoubleArrayProperty m_maxDr
DoubleArrayProperty m_maxR
static double areaTriangle(double, double, double, double, double, double)
Amg::Vector3D getCirclesIntersectionPoint(const Trk::Perigee *per1, const Trk::Perigee *per2, unsigned int flag, int &errorcode) const
Get intersection point of two track helices.
virtual StatusCode finalize() override
DoubleArrayProperty m_maxPhi
DoubleArrayProperty m_maxArcLength
std::map< std::string, float > Values_t
DoubleArrayProperty m_maxDR
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee