00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef TCOSMICFITTER_FLAG_
00014 #define TCOSMICFITTER_FLAG_
00015
00016 #ifdef TRKRECO_DEBUG_DETAIL
00017 #ifndef TRKRECO_DEBUG
00018 #define TRKRECO_DEBUG
00019 #endif
00020 #endif
00021 #include "TrkReco/TMFitter.h"
00022 #define HEP_SHORT_NAMES
00023 #include "CLHEP/Matrix/Vector.h"
00024
00025
00026 #include "TrackUtil/Helix.h"
00027
00028 #include "GaudiKernel/IInterface.h"
00029 #include "GaudiKernel/Kernel.h"
00030 #include "GaudiKernel/Service.h"
00031 #include "MagneticField/IMagneticFieldSvc.h"
00032 #include "MagneticField/MagneticFieldSvc.h"
00033
00034 #include "CLHEP/Matrix/Vector.h"
00035 #include "CLHEP/Matrix/SymMatrix.h"
00036 #include "CLHEP/Vector/ThreeVector.h"
00037 #include "CLHEP/Vector/LorentzVector.h"
00038
00039
00040 using CLHEP::HepVector;
00041
00042 class TMLink;
00043
00045 class TCosmicFitter : public TMFitter {
00046
00047 public:
00049 TCosmicFitter(const std::string & name);
00050
00052 virtual ~TCosmicFitter();
00053
00054 public:
00056 void dump(const std::string & message = std::string(""),
00057 const std::string & prefix = std::string("")) const;
00058
00059 public:
00060 int fit(TTrackBase &) const;
00061 int fit(TTrackBase &, float t0Offset) const;
00062
00063 int fitWithCathode(TTrackBase &, float t0Offset = 0.,
00064 float windowSize= 0.6, int SysCorr = 0 ) ;
00065
00066 private:
00068 int dxda(const TMLink & link,
00069 const Helix & helix,
00070 double dPhi,
00071 HepVector & dxda,
00072 HepVector & dyda,
00073 HepVector & dzda,
00074 int doSagCorrection) const;
00075
00076 private:
00077 IMagneticFieldSvc* m_pmgnIMF;
00078
00079 };
00080
00081
00082
00083 #ifdef TRKRECO_NO_INLINE
00084 #define inline
00085 #else
00086 #undef inline
00087 #define TCOSMICFITTER_INLINE_DEFINE_HERE
00088 #endif
00089
00090 #ifdef TCOSMICFITTER_INLINE_DEFINE_HERE
00091
00092 #endif
00093
00094 #undef inline
00095
00096 #endif