13#include "CLHEP/Matrix/Vector.h"
14#include "CLHEP/Matrix/SymMatrix.h"
15#ifndef CLHEP_THREEVECTOR_H
16#include "CLHEP/Vector/ThreeVector.h"
18#include "CLHEP/Vector/LorentzVector.h"
19#ifndef CLHEP_POINT3D_H
20#include "CLHEP/Geometry/Point3D.h"
22#ifndef ENABLE_BACKWARDS_COMPATIBILITY
27typedef CLHEP::HepVector Vector;
28typedef CLHEP::HepSymMatrix SymMatrix;
29typedef CLHEP::Hep3Vector Vector3;
30typedef CLHEP::HepLorentzVector VectorL;
31typedef CLHEP::HepLorentzVector Vector4;
32typedef CLHEP::HepMatrix Matrix;
34using CLHEP::HepVector;
35using CLHEP::HepSymMatrix;
36using CLHEP::Hep3Vector;
37using CLHEP::HepLorentzVector;
38using CLHEP::HepMatrix;
54 const HepSymMatrix&
Ea);
98 double*
x(
double dPhi,
double p[3])
const;
104 Hep3Vector
direction(
double dPhi = 0.)
const;
107 Hep3Vector
momentum(
double dPhi = 0.)
const;
110 Hep3Vector
momentum(
double dPhi, HepSymMatrix& Em)
const;
113 HepLorentzVector
momentum(
double dPhi,
double mass)
const;
116 HepLorentzVector
momentum(
double dPhi,
double mass, HepSymMatrix& Em)
const;
119 HepLorentzVector
momentum(
double dPhi,
double mass,
HepPoint3D&
x, HepSymMatrix& Emx)
const;
131 double dr(
void)
const;
136 double phi0(
void)
const;
141 double kappa(
void)
const;
146 double dz(
void)
const;
151 double tanl(
void)
const;
156 double curv(
void)
const;
172 const HepVector&
a(
void)
const;
177 const HepSymMatrix&
Ea(
void)
const;
181 const HepVector&
a(
const HepVector& newA);
184 const HepSymMatrix&
Ea(
const HepSymMatrix& newdA);
192 const HepSymMatrix&
Ea);
220 static void set_limits(
const HepVector& a_min,
const HepVector& a_max);
249 HepMatrix
delApDelA(
const HepVector& ap)
const;
251 HepMatrix
delXDelA(
double phi)
const;
253 HepMatrix
delMDelA(
double phi)
const;
255 HepMatrix
del4MDelA(
double phi,
double mass)
const;
257 HepMatrix
del4MXDelA(
double phi,
double mass)
const;
322#if defined(BELLE_DEBUG)
323#define DEBUG_HELIX debugHelix()
324#define DEBUG_PRINT debugPrint()
332#ifdef Helix_NO_INLINE
336#define Helix_INLINE_DEFINE_HERE
339#ifdef Helix_INLINE_DEFINE_HERE
345#if defined(BELLE_DEBUG)
446 if (i.num_row() == 5) {
450#if defined(BELLE_DEBUG)
454 std::cout <<
"Helix::input vector's num_row is not 5" << std::endl;
static bool ms_print_debug
Debug option flag.
void checkValid(void)
Check whether helix parameters is valid or not.
HepMatrix delMDelA(double phi) const
DM/DA.
HepMatrix del4MDelA(double phi, double mass) const
DM4/DA.
void ignoreErrorMatrix(void)
Unsets error matrix.
const HepPoint3D & pivot(void) const
returns pivot position.
HepMatrix delXDelA(double phi) const
DX/DA.
HepPoint3D m_center
Cache of the center position of Helix.
const HepSymMatrix & Ea(void) const
Returns error matrix.
virtual ~Helix()
Destructor.
const HepPoint3D & center(void) const
returns position of helix center(z = 0.);
static bool set_exception(bool)
set exception
HepMatrix del4MXDelA(double phi, double mass) const
DMX4/DA.
void updateCache(void)
updateCache
bool m_matrixValid
True: matrix valid, False: matrix not valid.
double m_ac[5]
Cache of the helix parameter.
double tanl(void) const
Return helix parameter tangent lambda.
bool m_helixValid
True: helix valid, False: helix not valid.
Hep3Vector direction(double dPhi=0.) const
returns direction vector after rotating angle dPhi in phi direction.
double phi0(void) const
Return helix parameter phi0.
double radius(void) const
returns radious of helix.
static bool ms_throw_exception
Throw exception flag.
static bool ms_check_range
Check the helix parameter's range.
void set(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
Sets helix pivot position, parameters, and error matrix.
const HepVector & a(void) const
Returns helix parameters.
double dr(void) const
Return helix parameter dr.
void debugHelix(void) const
Debug Helix.
void debugPrint(void) const
Print the helix parameters to stdout.
static HepVector ms_amin
minimum limit of Helix parameter a
HepMatrix delApDelA(const HepVector &ap) const
DAp/DA.
HepVector m_a
Helix parameter.
double dz(void) const
Return helix parameter dz.
static const double ConstantAlpha
Constant alpha for uniform field.
double bFieldZ(void) const
Returns z componet of the magnetic field.
static HepVector ms_amax
maxiimum limit of Helix parameter a
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
static const std::string invalidhelix
String "Invalid Helix".
Helix & operator=(const Helix &)
Copy operator.
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
double m_cp
Cache of the cos phi0.
double m_alpha
10000.0/(speed of light)/B.
HepSymMatrix m_Ea
Error of the helix parameter.
double m_sp
Cache of the sin phi0.
double m_bField
Magnetic field, assuming uniform Bz in the unit of kG.
double m_r
Cache of the r.
double cosPhi0(void) const
Return cos phi0.
double kappa(void) const
Return helix parameter kappa.
double curv(void) const
Return curvature of helix.
double m_pt
Cache of the pt.
static void set_limits(const HepVector &a_min, const HepVector &a_max)
set limit for parameter "a"
static bool set_print(bool)
Set print option for debugging.
double sinPhi0(void) const
Return sin phi0.
Abstract base class for different kinds of events.