1#ifndef HTrack_Parameter_H
2#define HTrack_Parameter_H
11#include "CLHEP/Matrix/Vector.h"
12#include "CLHEP/Vector/LorentzVector.h"
13#include "CLHEP/Vector/ThreeVector.h"
14#include "CLHEP/Matrix/SymMatrix.h"
15#include "CLHEP/Matrix/Matrix.h"
16using CLHEP::HepVector;
17using CLHEP::HepLorentzVector;
18using CLHEP::Hep3Vector;
19using CLHEP::HepMatrix;
20using CLHEP::HepSymMatrix;
21#include "CLHEP/Geometry/Point3D.h"
22#ifndef ENABLE_BACKWARDS_COMPATIBILITY
46 HepMatrix
dHdx(
const HepVector
p,
const HepVector
x);
47 HepMatrix
dHdp(
const HepVector
p,
const HepVector
x);
49 HepVector
hel()
const {
return m_hel;}
50 HepVector
helix()
const {
return m_hel;}
51 HepSymMatrix
eHel()
const {
return m_eHel;}
53 int partID()
const {
return m_partID;}
58 inline double pxy()
const;
59 inline HepVector
p()
const;
60 inline HepVector
x()
const;
61 inline Hep3Vector
p3()
const;
63 inline HepLorentzVector
p(
const double mass)
const;
67 double drho()
const {
return m_hel[0];}
68 double phi0()
const {
return m_hel[1];}
69 double kappa()
const {
return m_hel[2];}
70 double dz()
const {
return m_hel[3];}
71 double lambda()
const {
return m_hel[4];}
82 void setHel(
const HepVector he) {m_hel = he;}
83 void setEHel(
const HepSymMatrix eH) {m_eHel = eH;}
88 double xmass(
const int i)
const;
108 return (m_hel[2]>0 ? +1 :-1);
112 return fabs(1/m_hel[2]);
117 double pxy = 1./fabs(m_hel[2]);
118 p0[0] = 0 -
pxy*
sin(m_hel[1]);
119 p0[1] =
pxy*
cos(m_hel[1]);
120 p0[2] =
pxy * m_hel[4];
127 v0[0] = m_hel[0]*
cos(m_hel[1]);
128 v0[1] = m_hel[0]*
sin(m_hel[1]);
134 return HepPoint3D(m_hel[0]*
cos(m_hel[1]), m_hel[0]*
sin(m_hel[1]), m_hel[3]);
138 double pxy = 1./fabs(m_hel[2]);
139 return Hep3Vector(0-
pxy*
sin(m_hel[1]),
pxy*
cos(m_hel[1]),
pxy*m_hel[4]);
150 Hep3Vector p3tmp =
p3();
151 double ptrk = p3tmp.r();
152 double e = sqrt(ptrk*ptrk+
mass*
mass);
153 return HepLorentzVector(p3tmp, e);
double sin(const BesAngle a)
double cos(const BesAngle a)
HepGeom::Point3D< double > HepPoint3D
void setTrackID(const int trackID)
HepPoint3D positionCylinder(const double) const
HepPoint3D positionTwoHelix(const HTrackParameter) const
HepMatrix dHdp(const HepVector p, const HepVector x)
double minDistanceTwoHelix(const HTrackParameter G, HepPoint3D &pos)
void setHel(const HepVector he)
HepMatrix dHdx(const HepVector p, const HepVector x)
double xmass(const int i) const
WTrackParameter wTrack() const
WTrackParameter wTrack(const double mass) const
HTrackParameter(const HepVector helix, const HepSymMatrix eMatrix, const int trackid, const int partid)
HepPoint3D positionPlane(const double) const
HepPoint3D center() const
HepSymMatrix eHel() const
HTrackParameter & operator=(const HTrackParameter &htrk)
HTrackParameter(const HTrackParameter &htrk)
void setEHel(const HepSymMatrix eH)
void setPartID(const int partID)
HTrackParameter(const WTrackParameter wtrk)
HepPoint3D positionCone() const
HTrackParameter(const int charge, const HepVector p, const HepVector x)
HTrackParameter(const HepVector helix, const double error[], const int trackid, const int partid)
HepLorentzVector p(const double mass) const