1#ifndef HTrack_Parameter_H
2#define HTrack_Parameter_H
11#include "CLHEP/Matrix/Matrix.h"
12#include "CLHEP/Matrix/SymMatrix.h"
13#include "CLHEP/Matrix/Vector.h"
14#include "CLHEP/Vector/LorentzVector.h"
15#include "CLHEP/Vector/ThreeVector.h"
16using CLHEP::Hep3Vector;
17using CLHEP::HepLorentzVector;
18using CLHEP::HepMatrix;
19using CLHEP::HepSymMatrix;
20using CLHEP::HepVector;
21#include "CLHEP/Geometry/Point3D.h"
22#ifndef ENABLE_BACKWARDS_COMPATIBILITY
48 HepMatrix
dHdx(
const HepVector
p,
const HepVector x );
49 HepMatrix
dHdp(
const HepVector
p,
const HepVector x );
51 HepVector
hel()
const {
return m_hel; }
52 HepVector
helix()
const {
return m_hel; }
53 HepSymMatrix
eHel()
const {
return m_eHel; }
55 int partID()
const {
return m_partID; }
60 inline double pxy()
const;
61 inline HepVector
p()
const;
62 inline HepVector
x()
const;
63 inline Hep3Vector
p3()
const;
65 inline HepLorentzVector
p(
const double mass )
const;
69 double drho()
const {
return m_hel[0]; }
70 double phi0()
const {
return m_hel[1]; }
71 double kappa()
const {
return m_hel[2]; }
72 double dz()
const {
return m_hel[3]; }
73 double lambda()
const {
return m_hel[4]; }
83 void setHel(
const HepVector he ) { m_hel = he; }
84 void setEHel(
const HepSymMatrix eH ) { m_eHel = eH; }
89 double xmass(
const int i )
const;
115 HepVector p0( 3, 0 );
116 double pxy = 1. / fabs( m_hel[2] );
117 p0[0] = 0 -
pxy *
sin( m_hel[1] );
118 p0[1] =
pxy *
cos( m_hel[1] );
119 p0[2] =
pxy * m_hel[4];
124 HepVector v0( 3, 0 );
125 v0[0] = m_hel[0] *
cos( m_hel[1] );
126 v0[1] = m_hel[0] *
sin( m_hel[1] );
132 return HepPoint3D( m_hel[0] *
cos( m_hel[1] ), m_hel[0] *
sin( m_hel[1] ), m_hel[3] );
136 double pxy = 1. / fabs( m_hel[2] );
137 return Hep3Vector( 0 -
pxy *
sin( m_hel[1] ),
pxy *
cos( m_hel[1] ),
pxy * m_hel[4] );
148 Hep3Vector p3tmp =
p3();
149 double ptrk = p3tmp.r();
150 double e = sqrt( ptrk * ptrk +
mass *
mass );
151 return HepLorentzVector( p3tmp, e );
HepGeom::Point3D< double > HepPoint3D
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