14#ifndef VertexFit_VFHelix_FLAG_
15#define VertexFit_VFHelix_FLAG_
17#include "CLHEP/Matrix/Matrix.h"
18#include "CLHEP/Matrix/SymMatrix.h"
19#include "CLHEP/Matrix/Vector.h"
20using CLHEP::HepMatrix;
21using CLHEP::HepSymMatrix;
22using CLHEP::HepVector;
23#ifndef CLHEP_THREEVECTOR_H
24# include "CLHEP/Vector/ThreeVector.h"
25using CLHEP::Hep3Vector;
27#include "CLHEP/Vector/LorentzVector.h"
28using CLHEP::HepLorentzVector;
29#ifndef CLHEP_POINT3D_H
30# include "CLHEP/Geometry/Point3D.h"
31# ifndef ENABLE_BACKWARDS_COMPATIBILITY
61 double radius(
void )
const;
65 double*
x(
double dPhi,
double p[3] )
const;
68 HepPoint3D x(
double dPhi, HepSymMatrix& Ex )
const;
71 Hep3Vector
direction(
double dPhi = 0. )
const;
74 Hep3Vector
momentum(
double dPhi = 0. )
const;
77 Hep3Vector
momentum(
double dPhi, HepSymMatrix& Em )
const;
80 HepLorentzVector
momentum(
double dPhi,
double mass )
const;
83 HepLorentzVector
momentum(
double dPhi,
double mass, HepSymMatrix& Em )
const;
87 HepSymMatrix& Emx )
const;
92 double dr(
void )
const;
93 double phi0(
void )
const;
94 double kappa(
void )
const;
95 double dz(
void )
const;
96 double tanl(
void )
const;
97 double curv(
void )
const;
102 const HepVector&
a(
void )
const;
105 const HepSymMatrix&
Ea(
void )
const;
109 const HepVector&
a(
const HepVector& newA );
112 const HepSymMatrix&
Ea(
const HepSymMatrix& newdA );
134 HepMatrix
delApDelA(
const HepVector& ap )
const;
135 HepMatrix
delXDelA(
double phi )
const;
136 HepMatrix
delMDelA(
double phi )
const;
141 void updateCache(
void );
166#ifdef VFHelix_NO_INLINE
170# define VFHelix_INLINE_DEFINE_HERE
173#ifdef VFHelix_INLINE_DEFINE_HERE
195inline const HepVector&
VFHelix::a(
void )
const {
return m_a; }
197inline const HepSymMatrix&
VFHelix::Ea(
void )
const {
return m_Ea; }
205inline const HepSymMatrix&
VFHelix::Ea(
const HepSymMatrix& i ) {
return m_Ea = i; }
209 m_alpha = 10000. / 2.99792458 / m_bField;
**********INTEGER nmxhep !maximum number of particles DOUBLE PRECISION vhep INTEGER jdahep COMMON hepevt $ !serial number $ !number of particles $ !status code $ !particle ident KF $ !parent particles $ !childreen particles $ !four momentum
HepGeom::Point3D< double > HepPoint3D
HepGeom::Point3D< double > HepPoint3D
double sinPhi0(void) const
virtual ~VFHelix()
Destructor.
HepMatrix del4MDelA(double phi, double mass) const
const HepPoint3D & pivot(void) const
returns pivot position.
double radius(void) const
returns radious of helix.
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
HepMatrix delApDelA(const HepVector &ap) const
double dr(void) const
returns an element of parameters.
double bFieldZ(void) const
HepMatrix delMDelA(double phi) const
HepMatrix del4MXDelA(double phi, double mass) const
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
HepMatrix delXDelA(double phi) const
Hep3Vector direction(double dPhi=0.) const
returns direction vector after rotating angle dPhi in phi direction.
void ignoreErrorMatrix(void)
void set(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
sets helix pivot position, parameters, and error matrix.
VFHelix & operator=(const VFHelix &)
Copy operator.
VFHelix(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
Constructor with pivot, helix parameter a, and its error matrix.
static const double ConstantAlpha
Constant alpha for uniform field.
const HepSymMatrix & Ea(void) const
returns error matrix.
double cosPhi0(void) const
const HepVector & a(void) const
returns helix parameters.
const HepPoint3D & center(void) const
returns position of helix center(z = 0.);