13#include <framework/dataobjects/Helix.h>
14#include <framework/geometry/B2Vector3.h>
28 enum HelixCoor {iD0 = 0, iPhi0, iOmega, iZ0, iTanLambda, iArcLength2D} ;
32 const Eigen::Matrix<double, 3, 1>& momentum,
33 int charge,
double Bz,
36 Eigen::Matrix<double, 5, 6>& jacobian);
54 int charge,
double Bz,
56 Eigen::Matrix<double, 5, 6>& jacobian);
60 int charge,
double Bz,
62 Eigen::Matrix<double, 5, 6>& jacobian,
67 static void helixFromVertex(
const Eigen::Matrix<double, 1, 6>& positionAndMomentum,
68 int charge,
double Bz,
71 Eigen::Matrix<double, 5, 6>& jacobian);
77 ROOT::Math::XYZVector& position,
78 ROOT::Math::XYZVector& momentum,
int& charge);
92 double& flt1,
double& flt2,
100 static double phidomain(
const double phi) ;
This class represents an ideal helix in perigee parameterization.
utility for helix<->x,p conversions
static std::string vertexParName(int i)
map of the vertex parameters by list index
static void helixFromVertex(const Eigen::Matrix< double, 1, 6 > &positionAndMomentum, int charge, double Bz, Belle2::Helix &helix, double &L, Eigen::Matrix< double, 5, 6 > &jacobian)
vertex --> helix
static void getHelixAndJacobianFromVertexNumerical(const Eigen::Matrix< double, 1, 6 > &positionAndMom, int charge, double Bz, Belle2::Helix &helix, Eigen::Matrix< double, 5, 6 > &jacobian)
get helix and jacobian from a vertex
static void vertexFromHelix(const Belle2::Helix &helix, double L, double Bz, ROOT::Math::XYZVector &position, ROOT::Math::XYZVector &momentum, int &charge)
helix --> vertex
static void printVertexPar(const Belle2::B2Vector3D &position, const Belle2::B2Vector3D &momentum, int charge)
Print the vertex parameters.
static double helixPoca(const Belle2::Helix &helix1, const Belle2::Helix &helix2, double &flt1, double &flt2, Belle2::B2Vector3D &vertex, bool parallel=false)
POCA between two tracks.
static void getJacobianFromVertexNumerical(const Eigen::Matrix< double, 1, 6 > &positionAndMom, int charge, double Bz, const Belle2::Helix &helix, Eigen::Matrix< double, 5, 6 > &jacobian, double delta=1e-5)
get jacobian from a vertex
static std::string helixParName(int i)
map of the helix parameters by list index
static double phidomain(const double phi)
the domain of phi
static void helixFromVertexNumerical(const Eigen::Matrix< double, 3, 1 > &position, const Eigen::Matrix< double, 3, 1 > &momentum, int charge, double Bz, Belle2::Helix &helix, double &flt, Eigen::Matrix< double, 5, 6 > &jacobian)
get helix from a vertex
static void getJacobianToCartesianFrameworkHelix(Eigen::Matrix< double, 5, 6 > &jacobian, const double x, const double y, const double z, const double px, const double py, const double pz, const double bfield, const double charge)
get the jacobian dh={helix pars}/dx={x,y,z,px,py,pz} for the implementation of the framework helix.
HelixCoor
Parameters of the helix.
VertexCoor
Parameters of the vertex