00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkKalDeriv.h,v 1.2 2006/03/28 01:02:36 zhangy Exp $ 00004 // 00005 // Description: Pure abstract class adding derrivative functions needed 00006 // for kalman tracking. This shouldn't be inherited directly, but is 00007 // instead brought in either through TrkSimpTraj or TrkDifPieceTraj. 00008 // 00009 // Environment: 00010 // Software developed for the BaBar Detector at the SLAC B-Factory. 00011 // 00012 // Author(s): Dave Brown 6/2/97 00013 // 00014 //------------------------------------------------------------------------ 00015 00016 #ifndef TRKKALDERIV_H 00017 #define TRKKALDERIV_H 00018 #include "CLHEP/Matrix/Matrix.h" 00019 00020 using CLHEP::HepMatrix; 00021 00022 // Enum defining deflection directions: theta1 is deflection in the 00023 // rho-z plane, theta2 is deflection in the phi direction. 00024 enum deflectDirection{ theta1=0,theta2}; 00025 00026 class TrkKalDeriv { 00027 public: 00028 // FIXME: this is a baseclass, therefore it should have a virtual d'tor... 00029 // virtual ~TrkKalDeriv() {} ; 00030 // Change in param WRT change in direction 00031 virtual HepMatrix derivDeflect(double fltlen,deflectDirection idir) const = 0; 00032 // change in param WRT change in transverse position. This is another 00033 // effect of multiple scattering, only substantial for thick materials 00034 virtual HepMatrix derivDisplace(double fltlen,deflectDirection idir) const = 0; 00035 // Similair function for the parameter change WRT change in fractional momentum 00036 virtual HepMatrix derivPFract(double fltlen) const = 0; 00037 00038 }; 00039 00040 #endif