13#ifndef THELIXFITTER_FLAG_
14#define THELIXFITTER_FLAG_
16#ifdef TRKRECO_DEBUG_DETAIL
21#define HEP_SHORT_NAMES
22#include "CLHEP/Matrix/Vector.h"
25#include "TrackUtil/Helix.h"
26#include "TrkReco/TMFitter.h"
27#include "TrkReco/TTrackBase.h"
29#include "MagneticField/IMagneticFieldSvc.h"
30#include "MagneticField/MagneticFieldSvc.h"
32#include "CLHEP/Matrix/SymMatrix.h"
33#include "CLHEP/Vector/ThreeVector.h"
34#include "CLHEP/Vector/LorentzVector.h"
35#include "CLHEP/Geometry/Point3D.h"
40using CLHEP::HepVector;
43#define TrackFitNoCorrection 0
44#define TrackFitCorrectOnce 1
45#define TrackFitCorrectEveryIteration 2
59 void dump(
const std::string & message = std::string(
""),
60 const std::string & prefix = std::string(
""))
const;
64 bool fit2D(
void)
const;
89 bool tanl(
void)
const;
96 double chi2(
void)
const;
101 int fit(
TTrackBase &,
double *pre_chi2,
double *fitted_chi2)
const;
102 int fit(
TTrackBase &,
float t0Offset,
double *pre_chi2=NULL,
double *fitted_chi2=NULL)
const;
103 int fit(
TTrackBase &,
float & tev,
float & tev_err,
double *pre_chi2=NULL,
double *fitted_chi2=NULL)
const;
107 int main(
TTrackBase &,
float t0Offset,
double *pre_chi2=NULL,
double *fitted_chi2=NULL)
const;
110 int main(
TTrackBase &,
float & tev,
float & tev_err,
double *pre_chi2=NULL,
double *fitted_chi2=NULL)
const;
113 void drift(
const TTrack &,
117 double & itsError)
const;
120 void drift(
const TTrack &,
125 double & ddda)
const;
129 int dxda(
const TMLink & link,
134 HepVector & dzda)
const;
139 unsigned _corrections;
148 mutable double _pre_chi2;
149 mutable double _fitted_chi2;
158#ifdef TRKRECO_NO_INLINE
162#define THELIXFITTER_INLINE_DEFINE_HERE
165#ifdef THELIXFITTER_INLINE_DEFINE_HERE
194 return (
bool) _propagation;
200 if (a) _propagation = 1;
201 else _propagation = 0;
232 if (! _freeT0)
return main(a, 0.);
236 return main(a, tev, tevError);
243 double *pre_chi2,
double *fitted_chi2)
const {
244 if (! _freeT0)
return main(a, 0., pre_chi2, fitted_chi2);
248 return main(a, tev, tevError, pre_chi2, fitted_chi2);
255 double *pre_chi2,
double *fitted_chi2)
const {
257 if (! _freeT0)
return main(a, t0Offset, pre_chi2, fitted_chi2);
259 float tev = t0Offset;
261 return main(a, tev, tevError, pre_chi2, fitted_chi2);
268 double *pre_chi2,
double *fitted_chi2)
const {
270 return main(a, tev, tev_err, pre_chi2, fitted_chi2);
294 return _corrections = a;
A class to fit a TTrackBase object to a helix.
double chi2(void) const
returns sum of chi2 aftter fit.
virtual ~THelixFitter()
Destructor.
void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.
bool freeT0(void) const
sets/returns free T0 flag.
bool fit2D(void) const
sets/returns 2D flag.
double preChi2(void) const
returns sum of chi2 before fit.
unsigned corrections(void) const
sets/returns correctin flag.
bool tof(void) const
sets/returns propagation-delay correction flag.
int fit(TTrackBase &) const
bool sag(void) const
sets/returns sag correction flag.
IMagneticFieldSvc * getMagneticFieldPointer(void) const
bool tanl(void) const
sets/returns tanLambda correction flag.
bool propagation(void) const
sets/returns propagation-delay correction flag.
A class to fit a TTrackBase object.
const std::string & name(void) const
returns name.
A class to relate TMDCWireHit and TTrack objects.
A virtual class for a track class in tracking.
A class to represent a track in tracking.