11#include "GaudiKernel/IInterface.h"
12#include "GaudiKernel/Kernel.h"
13#include "GaudiKernel/Service.h"
14#include "KalFitAlg/KalFitHitMdc.h"
15#include "MagneticFieldSvc/IBesMagFieldSvc.h"
17#include "CLHEP/Matrix/SymMatrix.h"
18#include "CLHEP/Matrix/Vector.h"
20#include "CLHEP/Vector/ThreeVector.h"
22#include "CLHEP/Vector/LorentzVector.h"
24#include "CLHEP/Geometry/Point3D.h"
27#ifndef ENABLE_BACKWARDS_COMPATIBILITY
40 Helix(
const HepPoint3D&
pivot,
const HepVector&
a,
const HepSymMatrix&
Ea );
46 Helix(
const HepPoint3D& position,
const Hep3Vector&
momentum,
double charge );
53 const HepPoint3D&
center(
void )
const;
56 const HepPoint3D&
pivot(
void )
const;
62 HepPoint3D
x(
double dPhi = 0. )
const;
63 double*
x(
double dPhi,
double p[3] )
const;
66 HepPoint3D
x(
double dPhi, HepSymMatrix& Ex )
const;
75 Hep3Vector
momentum(
double dPhi, HepSymMatrix& Em )
const;
81 HepLorentzVector
momentum(
double dPhi,
double mass, HepSymMatrix& Em )
const;
85 HepSymMatrix& Emx )
const;
90 double dr(
void )
const;
93 double dz(
void )
const;
100 const HepVector&
a(
void )
const;
103 const HepSymMatrix&
Ea(
void )
const;
107 double approach( HepPoint3D pfwd, HepPoint3D pbwd,
bool doSagCorrection )
const;
111 const HepVector&
a(
const HepVector& newA );
114 const HepSymMatrix&
Ea(
const HepSymMatrix& newdA );
117 const HepPoint3D&
pivot(
const HepPoint3D& newPivot );
120 void set(
const HepPoint3D&
pivot,
const HepVector&
a,
const HepSymMatrix&
Ea );
149 void updateCache(
void );
174#ifdef Helix_NO_INLINE
178# define Helix_INLINE_DEFINE_HERE
181#ifdef Helix_INLINE_DEFINE_HERE
191 inline double Helix::dr(
void )
const {
return m_ac[0]; }
193 inline double Helix::phi0(
void )
const {
return m_ac[1]; }
195 inline double Helix::kappa(
void )
const {
return m_ac[2]; }
197 inline double Helix::dz(
void )
const {
return m_ac[3]; }
199 inline double Helix::tanl(
void )
const {
return m_ac[4]; }
201 inline double Helix::curv(
void )
const {
return m_r; }
203 inline const HepVector&
Helix::a(
void )
const {
return m_a; }
205 inline const HepSymMatrix&
Helix::Ea(
void )
const {
return m_Ea; }
207 inline const HepVector&
Helix::a(
const HepVector& i ) {
213 inline const HepSymMatrix&
Helix::Ea(
const HepSymMatrix& i ) {
return m_Ea = i; }
217 m_alpha = 10000. / 2.99792458 / m_bField;
224 inline double Helix::alpha(
void )
const {
return m_alpha; }
**********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
Description of a Hit in Mdc.
const HepPoint3D & pivot(const HepPoint3D &newPivot)
sets pivot position.
const HepPoint3D & pivot(void) const
returns pivot position.
double cosPhi0(void) const
double sinPhi0(void) const
double bFieldZ(void) const
HepMatrix delApDelA(const HepVector &ap) const
const HepPoint3D & center(void) const
returns position of helix center(z = 0.);
HepMatrix delXDelA(double phi) const
const HepPoint3D & center(void) const
returns position of helix center(z = 0.);
double cosPhi0(void) const
Helix & operator=(const Helix &)
Copy operator.
const HepVector & a(void) const
returns helix parameters.
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
Hep3Vector momentum(double dPhi, HepSymMatrix &Em) const
returns momentum vector after rotating angle dPhi in phi direction.
Hep3Vector direction(double dPhi=0.) const
returns direction vector after rotating angle dPhi in phi direction.
double sinPhi0(void) const
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
Helix(const HepPoint3D &pivot, const HepVector &a)
Constructor without error matrix.
HepLorentzVector momentum(double dPhi, double mass, HepPoint3D &x, HepSymMatrix &Emx) const
returns 4momentum vector after rotating angle dPhi in phi direction.
HepMatrix del4MDelA(double phi, double mass) const
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
double bFieldZ(double)
sets/returns z componet of the magnetic field.
virtual ~Helix()
Destructor.
void ignoreErrorMatrix(void)
Helix(const HepPoint3D &position, const Hep3Vector &momentum, double charge)
Constructor with position, momentum, and charge.
Helix(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
Constructor with pivot, helix parameter a, and its error matrix.
double * x(double dPhi, double p[3]) const
const HepSymMatrix & Ea(const HepSymMatrix &newdA)
sets helix paramters and error matrix.
const HepSymMatrix & Ea(void) const
returns error matrix.
static const double ConstantAlpha
Constant alpha for uniform field.
const HepSymMatrix & Ea(void) const
returns error matrix.
void set(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
sets helix pivot position, parameters, and error matrix.
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
HepPoint3D x(double dPhi, HepSymMatrix &Ex) const
returns position and convariance matrix(Ex) after rotation.
double bFieldZ(void) const
HepLorentzVector momentum(double dPhi, double mass, HepSymMatrix &Em) const
returns 4momentum 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.
HepMatrix del4MXDelA(double phi, double mass) const
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.
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.
double approach(HepPoint3D pfwd, HepPoint3D pbwd, bool doSagCorrection) const
Hep3Vector direction(double dPhi=0.) const
returns direction vector after rotating angle dPhi in phi direction.
double dr(void) const
returns an element of parameters.
HepMatrix delMDelA(double phi) const
double approach(KalFitHitMdc &hit, bool doSagCorrection) const
double radius(void) const
returns radious of helix.