BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TCircleFitter Class Reference

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

#include <TCircleFitter.h>

Inheritance diagram for TCircleFitter:

Public Member Functions

 TCircleFitter (const std::string &name)
 Constructor.
virtual ~TCircleFitter ()
 Destructor.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
virtual int fit (TTrackBase &) const
 TCircleFitter (const std::string &name)
 Constructor.
virtual ~TCircleFitter ()
 Destructor.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
virtual int fit (TTrackBase &) const
 TCircleFitter (const std::string &name)
 Constructor.
virtual ~TCircleFitter ()
 Destructor.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
virtual int fit (TTrackBase &) const
Public Member Functions inherited from TMFitter
 TMFitter (const std::string &name)
 Constructor.
virtual ~TMFitter ()
 Destructor.
const std::string & name (void) const
 returns name.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 TMFitter (const std::string &name)
 Constructor.
virtual ~TMFitter ()
 Destructor.
const std::string & name (void) const
 returns name.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 TMFitter (const std::string &name)
 Constructor.
virtual ~TMFitter ()
 Destructor.
const std::string & name (void) const
 returns name.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const

Additional Inherited Members

Protected Member Functions inherited from TMFitter
void fitDone (TTrackBase &) const
 sets the fitted flag. (Bad implementation)
void fitDone (TTrackBase &) const
 sets the fitted flag. (Bad implementation)
void fitDone (TTrackBase &) const
 sets the fitted flag. (Bad implementation)

Detailed Description

A class to fit a TTrackBase object to a circle.

Definition at line 32 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TCircleFitter.h.

Constructor & Destructor Documentation

◆ TCircleFitter() [1/3]

TCircleFitter::TCircleFitter ( const std::string & name)

Constructor.

Definition at line 21 of file TCircleFitter.cxx.

22 : TMFitter( name ), _charge( 0. ), _radius( 0. ), _center( HepPoint3D( 0., 0., 0. ) ) {}
HepGeom::Point3D< double > HepPoint3D
const std::string & name(void) const
returns name.
TMFitter(const std::string &name)
Constructor.
Definition TMFitter.cxx:17

◆ ~TCircleFitter() [1/3]

TCircleFitter::~TCircleFitter ( )
virtual

Destructor.

Definition at line 24 of file TCircleFitter.cxx.

24{}

◆ TCircleFitter() [2/3]

TCircleFitter::TCircleFitter ( const std::string & name)

Constructor.

◆ ~TCircleFitter() [2/3]

virtual TCircleFitter::~TCircleFitter ( )
virtual

Destructor.

◆ TCircleFitter() [3/3]

TCircleFitter::TCircleFitter ( const std::string & name)

Constructor.

◆ ~TCircleFitter() [3/3]

virtual TCircleFitter::~TCircleFitter ( )
virtual

Destructor.

Member Function Documentation

◆ dump() [1/3]

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

dumps debug information.

◆ dump() [2/3]

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

dumps debug information.

◆ dump() [3/3]

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

dumps debug information.

◆ fit() [1/3]

int TCircleFitter::fit ( TTrackBase & t) const
virtual

Implements TMFitter.

Definition at line 26 of file TCircleFitter.cxx.

26 {
27
28#ifdef TRKRECO_DEBUG_DETAIL
29 std::cout << " TCircleFitter::fit ..." << std::endl;
30#endif
31
32 //...Already fitted ?...
33 if ( t.fitted() ) return TFitAlreadyFitted;
34
35 //...Check # of hits...
36 if ( t.links().length() < 3 ) return TFitErrorFewHits;
37
38 //...Hit loop...
39 Lpav circle;
40 /*
41 circle.add_point(-173.011, 94.3169);
42 circle.add_point(-187.6, 101.528);
43 circle.add_point(-202.018, 108.601);
44 circle.add_point(-216.639, 115.691);
45 circle.add_point(-231.152, 122.49);
46 circle.add_point(-246.207, 129.496);
47 circle.add_point(-261.179, 136.407);
48 circle.add_point(-275.198, 142.764);
49 circle.add_point(-290.519, 149.572);
50 circle.add_point(-304.42, 155.7);
51 circle.add_point(-319.947, 162.285);
52 circle.add_point(-335.495, 168.731);
53 circle.add_point(-608.394, 264.577);
54 circle.add_point(-612.842, 265.869);
55 circle.add_point(-627.175, 270.011);
56 circle.add_point(-643.654, 274.719);
57 circle.add_point(-657.809, 278.683);
58 circle.add_point(-674.464, 283.209);
59 circle.add_point(-690.7, 287.541);
60 circle.add_point(-704.925, 291.091);
61 */
62 unsigned n = t.links().length();
63
64 for ( unsigned i = 0; i < n; i++ )
65 {
66 TMLink* l = t.links()[i];
67 const TMDCWireHit* h = l->hit();
68
69 //...Check next hit...
70 HepPoint3D point;
71 if ( h->state() & WireHitPatternLeft ) point = h->position( WireHitLeft );
72 else if ( h->state() & WireHitPatternRight ) point = h->position( WireHitRight );
73 else point = h->xyPosition();
74 // float weight = 1. / (h->distance() * h->distance());
75 // float weight = 1. / h->distance();
76
77 // if (h->state() & WireHitPatternLeft) cout<<"h: "<<h->wire()->layerId()<<" local: "
78 // <<h->wire()->localId()<<" TCirclefitter:
79 // L"<<endl; else cout<<"h: "<<h->wire()->layerId()<<" local: "
80 // <<h->wire()->localId()<<" TCirclefitter: R"<<endl;
81
82 circle.add_point( point.x(), point.y() ); //, weight);
83 // yuany
84
85 // cout<<"TCirclefitter("<<sqrt(point.x()*point.x()+point.y()*point.y())<<","
86 // <<point.y()/point.x()<<") dis:"
87 // <<(h->drift(0))*10000/40<<" point "<<point<<" L "<<(h->state()&WireHitPatternLeft)
88 // <<" R "<<(h->state()&WireHitPatternRight)<<endl;
89
90 // cout<<"TCirclefitter "<<point.x()<<" "<<point.y()<<" L
91 //"<<(h->state()&WireHitPatternLeft)<<" R "<<(h->state()&WireHitPatternRight)<<endl;
92 }
93
94 if ( circle.fit() < 0.0 || circle.kappa() == 0.0 ) return TFitFailed;
95 // yuany
96 // cout<<"circle chi2:"<<circle.fit()<<" kappa:"<<circle.kappa()<<"
97 // center:"<<circle.center()<<" radius:"<<circle.radius()<<endl;
98
99 HepVector v( circle.center() );
100 _center.setX( v( 1 ) );
101 _center.setY( v( 2 ) );
102 _radius = circle.radius();
103
104 //...Determine charge...Better way???
105 int qSum = 0;
106 for ( unsigned i = 0; i < n; i++ )
107 {
108 TMLink* l = t.links()[i];
109 if ( l == 0 ) continue;
110
111 const TMDCWireHit* h = l->hit();
112 if ( h == 0 ) continue;
113
114 float q = ( _center.cross( h->xyPosition() ) ).z();
115 if ( q > 0. ) qSum += 1;
116 else qSum -= 1;
117 }
118 if ( qSum >= 0 ) _charge = +1.;
119 else _charge = -1.;
120 _radius *= _charge;
121
122 if ( t.objectType() == Circle ) ( (TCircle&)t ).property( _charge, _radius, _center );
123 fitDone( t );
124 return 0;
125}
const Int_t n
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition KKsem.h:33
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition KarLud.h:35
HepVector center() const
void add_point(double x, double y, double w=1)
HepPoint3D position(unsigned) const
returns left position. z is always zero.
const HepPoint3D & xyPosition(void) const
returns drift time
void fitDone(TTrackBase &) const
sets the fitted flag. (Bad implementation)
Definition TMFitter.cxx:21
int t()
Definition t.c:1

◆ fit() [2/3]

virtual int TCircleFitter::fit ( TTrackBase & ) const
virtual

Implements TMFitter.

◆ fit() [3/3]

virtual int TCircleFitter::fit ( TTrackBase & ) const
virtual

Implements TMFitter.


The documentation for this class was generated from the following files: