13 #include <framework/dataobjects/Helix.h>
15 namespace TreeFitter {
27 enum HelixCoor {iD0 = 0, iPhi0, iOmega, iZ0, iTanLambda, iArcLength2D} ;
31 const Eigen::Matrix<double, 3, 1>& momentum,
32 int charge,
double Bz,
35 Eigen::Matrix<double, 5, 6>& jacobian);
53 int charge,
double Bz,
55 Eigen::Matrix<double, 5, 6>& jacobian);
59 int charge,
double Bz,
61 Eigen::Matrix<double, 5, 6>& jacobian,
66 static void helixFromVertex(
const Eigen::Matrix<double, 1, 6>& positionAndMomentum ,
67 int charge,
double Bz,
70 Eigen::Matrix<double, 5, 6>& jacobian);
77 TVector3& momentum,
int& charge);
86 static void printVertexPar(
const TVector3& position,
const TVector3& momentum,
int charge) ;
91 double& flt1,
double& flt2,
92 TVector3& vertex,
bool parallel =
false) ;
99 static double phidomain(
const double phi) ;
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, TVector3 &position, TVector3 &momentum, int &charge)
helix --> vertex
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 void printVertexPar(const TVector3 &position, const TVector3 &momentum, int charge)
Print the vertex parameters.
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 double helixPoca(const Belle2::Helix &helix1, const Belle2::Helix &helix2, double &flt1, double &flt2, TVector3 &vertex, bool parallel=false)
POCA between two tracks.
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