Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TLineFitter Class Reference

A class to fit a TTrackBase object to a line. More...

#include <TLineFitter.h>

Inheritance diagram for TLineFitter:

TMFitter TMFitter TRobustLineFitter TRobustLineFitter List of all members.

Public Member Functions

double a (void) const
double a (void) const
double b (void) const
double b (void) const
double det (void) const
double det (void) const
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
virtual int fit (TTrackBase &) const
virtual int fit (TTrackBase &) const
const std::string & name (void) const
 returns name.
const std::string & name (void) const
 returns name.
 TLineFitter (const std::string &name)
 Constructor.
 TLineFitter (const std::string &name)
 Constructor.
virtual ~TLineFitter ()
 Destructor.
virtual ~TLineFitter ()
 Destructor.

Protected Member Functions

void fitDone (TTrackBase &) const
 sets the fitted flag. (Bad implementation)
void fitDone (TTrackBase &) const
 sets the fitted flag. (Bad implementation)

Private Attributes

double _a
double _b
double _det

Detailed Description

A class to fit a TTrackBase object to a line.


Constructor & Destructor Documentation

TLineFitter::TLineFitter const std::string &  name  ) 
 

Constructor.

00019 : TMFitter(name), _a(0.), _b(0.), _det(0.) {
00020 }

TLineFitter::~TLineFitter  )  [virtual]
 

Destructor.

00022                           {
00023 }

TLineFitter::TLineFitter const std::string &  name  ) 
 

Constructor.

virtual TLineFitter::~TLineFitter  )  [virtual]
 

Destructor.


Member Function Documentation

double TLineFitter::a void   )  const
 

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

double TLineFitter::a void   )  const [inline]
 

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

00067                          {
00068     return _a;
00069 }

double TLineFitter::b void   )  const
 

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

double TLineFitter::b void   )  const [inline]
 

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

00073                          {
00074     return _b;
00075 }

double TLineFitter::det void   )  const
 

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

double TLineFitter::det void   )  const [inline]
 

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

00079                            {
00080     return _det;
00081 }

void TLineFitter::dump const std::string &  message = std::string(""),
const std::string &  prefix = std::string("")
const
 

dumps debug information.

Reimplemented from TMFitter.

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

void TLineFitter::dump const std::string &  message = std::string(""),
const std::string &  prefix = std::string("")
const
 

dumps debug information.

Reimplemented from TMFitter.

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

virtual int TLineFitter::fit TTrackBase  )  const [virtual]
 

Implements TMFitter.

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

int TLineFitter::fit TTrackBase  )  const [virtual]
 

Implements TMFitter.

Reimplemented in TRobustLineFitter, and TRobustLineFitter.

00026                                      {
00027 
00028     //...Already fitted ?...
00029     if (t.fitted()) return TFitAlreadyFitted;
00030 
00031     //...Check # of hits...
00032     if (t.links().length() < 2) return TFitErrorFewHits;
00033 
00034     unsigned n = t.links().length();
00035     if (_det == 0. && n == 2) {
00036         double x0 = t.links()[0]->position().x();
00037         double y0 = t.links()[0]->position().y();
00038         double x1 = t.links()[1]->position().x();
00039         double y1 = t.links()[1]->position().y();
00040         if (x0 == x1) return TFitFailed;
00041         _a = (y0 - y1) / (x0 - x1);
00042         _b = - _a * x1 + y1;
00043     }
00044     else {
00045         double sum = (double) n;
00046         double sumX = 0., sumY = 0., sumX2 = 0., sumXY = 0., sumY2 = 0.;
00047         for (unsigned i = 0; i < n; i++) {
00048             const HepPoint3D & p = t.links()[i]->position();
00049             double x = p.x();
00050             double y = p.y();
00051             sumX  += x;
00052             sumY  += y;
00053             sumX2 += x * x;
00054             sumXY += x * y;
00055             sumY2 += y * y;
00056         }
00057 
00058         _det = sum * sumX2 - sumX * sumX;
00059 #ifdef TRKRECO_DEBUG_DETAIL
00060         cout << "        TLineFitter::fit ... det=" << _det << std::endl;
00061 #endif
00062         if (_det == 0.) {
00063             return TFitFailed;
00064         }
00065         else {
00066             _a = (sumXY * sum - sumX * sumY) / _det;
00067             _b = (sumX2 * sumY - sumX * sumXY) / _det;
00068         }
00069     }
00070 
00071     if (t.objectType() == Line)
00072         ((TMLine &) t).property(_a, _b, _det);
00073     fitDone(t);
00074     return 0;
00075 }

void TMFitter::fitDone TTrackBase  )  const [protected, inherited]
 

sets the fitted flag. (Bad implementation)

void TMFitter::fitDone TTrackBase  )  const [protected, inherited]
 

sets the fitted flag. (Bad implementation)

00024                                       {
00025     t._fitted = true;
00026 }

const std::string& TMFitter::name void   )  const [inherited]
 

returns name.

const std::string & TMFitter::name void   )  const [inline, inherited]
 

returns name.

00073                          {
00074     return _name;
00075 }


Member Data Documentation

double TLineFitter::_a [mutable, private]
 

Reimplemented in TRobustLineFitter.

double TLineFitter::_b [mutable, private]
 

Reimplemented in TRobustLineFitter.

double TLineFitter::_det [mutable, private]
 

Reimplemented in TRobustLineFitter.


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 18:53:48 2011 for BOSS6.5.5 by  doxygen 1.3.9.1