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
35 HTrackParameter(
const HepVector
helix,
const HepSymMatrix eMatrix,
const int trackid,
const int partid);
36 HTrackParameter(
const HepVector
helix,
const double error[],
const int trackid,
const int partid);
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)
WTrackParameter wTrack() const
HepPoint3D positionPlane(const double) const
HepPoint3D center() const
HepSymMatrix eHel() const
HTrackParameter & operator=(const HTrackParameter &htrk)
void setEHel(const HepSymMatrix eH)
void setPartID(const int partID)
HepPoint3D positionCone() const