16#include "GaudiKernel/IInterface.h"
17#include "GaudiKernel/Kernel.h"
18#include "GaudiKernel/Service.h"
19#include "MagneticFieldSvc/IBesMagFieldSvc.h"
21#include "CLHEP/Matrix/SymMatrix.h"
22#include "CLHEP/Matrix/Vector.h"
24#include "CLHEP/Vector/ThreeVector.h"
26#include "CLHEP/Vector/LorentzVector.h"
28#include "CLHEP/Geometry/Point3D.h"
31#ifndef ENABLE_BACKWARDS_COMPATIBILITY
36using HepGeom::Point3D;
38typedef CLHEP::HepVector
Vector;
40typedef CLHEP::Hep3Vector
Vector3;
41typedef CLHEP::HepLorentzVector
VectorL;
42typedef CLHEP::HepLorentzVector
Vector4;
43typedef CLHEP::HepMatrix
Matrix;
45using CLHEP::Hep3Vector;
46using CLHEP::HepLorentzVector;
47using CLHEP::HepSymMatrix;
48using CLHEP::HepVector;
78 double*
x(
double dPhi,
double p[3] )
const;
90 Hep3Vector
momentum(
double dPhi, HepSymMatrix& Em )
const;
96 HepLorentzVector
momentum(
double dPhi,
double mass, HepSymMatrix& Em )
const;
100 HepSymMatrix& Emx )
const;
105 double dr(
void )
const;
108 double dz(
void )
const;
115 const HepVector&
a(
void )
const;
118 const HepSymMatrix&
Ea(
void )
const;
120 double pt(
void )
const {
return m_pt; }
121 double cosTheta(
void )
const {
return m_a[4] / sqrt( 1. + m_a[4] * m_a[4] ); }
125 const HepVector&
a(
const HepVector& newA );
128 const HepSymMatrix&
Ea(
const HepSymMatrix& newdA );
163 void updateCache(
void );
188#ifdef Helix_NO_INLINE
192# define Helix_INLINE_DEFINE_HERE
195#ifdef Helix_INLINE_DEFINE_HERE
197inline const HepPoint3D& Helix::center(
void )
const {
return m_center; }
205inline double Helix::dr(
void )
const {
return m_ac[0]; }
207inline double Helix::phi0(
void )
const {
return m_ac[1]; }
209inline double Helix::kappa(
void )
const {
return m_ac[2]; }
211inline double Helix::dz(
void )
const {
return m_ac[3]; }
213inline double Helix::tanl(
void )
const {
return m_ac[4]; }
215inline double Helix::curv(
void )
const {
return m_r; }
217inline const HepVector&
Helix::a(
void )
const {
return m_a; }
219inline const HepSymMatrix&
Helix::Ea(
void )
const {
return m_Ea; }
221inline const HepVector&
Helix::a(
const HepVector& i ) {
227inline const HepSymMatrix&
Helix::Ea(
const HepSymMatrix& i ) {
return m_Ea = i; }
**********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
CLHEP::Hep3Vector Vector3
CLHEP::HepSymMatrix SymMatrix
CLHEP::HepLorentzVector VectorL
CLHEP::HepLorentzVector Vector4
HepGeom::Point3D< double > HepPoint3D
HepLorentzVector momentum(double dPhi, double mass, HepPoint3D &x, HepSymMatrix &Emx) const
returns 4momentum vector after rotating angle dPhi in phi direction.
Helix(const HepPoint3D &pivot, const HepVector &a)
Constructor without error matrix.
HepMatrix delApDelA(const HepVector &ap) const
double cosPhi0(void) const
HepMatrix delMDelA(double phi) const
HepPoint3D x(double dPhi, HepSymMatrix &Ex) const
returns position and convariance matrix(Ex) after rotation.
double sinPhi0(void) const
const HepPoint3D & pivot(const HepPoint3D &newPivot)
sets pivot position.
double bFieldZ(double)
sets/returns z componet of the magnetic field.
const HepPoint3D & center(void) const
returns position of helix center(z = 0.);
virtual ~Helix()
Destructor.
void set(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
sets helix pivot position, parameters, and error matrix.
double cosTheta(void) const
Helix(const HepPoint3D &position, const Hep3Vector &momentum, double charge)
Constructor with position, momentum, and charge.
void ignoreErrorMatrix(void)
Helix & operator=(const Helix &)
Copy operator.
HepMatrix del4MXDelA(double phi, double mass) const
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
const HepVector & a(const HepVector &newA)
sets helix parameters.
HepLorentzVector momentum(double dPhi, double mass) const
returns 4momentum vector after rotating angle dPhi in phi direction.
const HepSymMatrix & Ea(const HepSymMatrix &newdA)
sets helix paramters and error matrix.
static const double ConstantAlpha
Constant alpha for uniform field.
const HepSymMatrix & Ea(void) const
returns error matrix.
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
double bFieldZ(void) const
double * x(double dPhi, double p[3]) const
HepMatrix del4MDelA(double phi, double mass) const
HepMatrix delXDelA(double phi) const
IBesMagFieldSvc * m_pmgnIMF
double radius(void) const
returns radious of helix.
double dr(void) const
returns an element of parameters.
const HepVector & a(void) const
returns helix parameters.
Hep3Vector momentum(double dPhi, HepSymMatrix &Em) const
returns momentum vector after rotating angle dPhi in phi direction.
Helix(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
Constructor with pivot, helix parameter a, and its error matrix.
const HepPoint3D & pivot(void) const
returns pivot position.
Hep3Vector direction(double dPhi=0.) const
returns direction vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum(double dPhi, double mass, HepSymMatrix &Em) const
returns 4momentum vector after rotating angle dPhi in phi direction.