#include <T3DLine.h>
Inheritance diagram for T3DLine:
Public Member Functions | |
T3DLine () | |
Constructors. | |
T3DLine (const TTrack &) | |
T3DLine (const T3DLine &) | |
virtual | ~T3DLine () |
Destructor. | |
double | dr (void) const |
Track parameters. | |
double | phi0 (void) const |
double | dz (void) const |
double | tanl (void) const |
double | cosPhi0 (void) const |
double | sinPhi0 (void) const |
Vector | a (void) const |
const SymMatrix & | Ea (void) const |
returns error matrix | |
const HepPoint3D & | pivot (void) const |
pivot position | |
Helix | helix (void) const |
approximated helix class | |
unsigned | ndf (void) const |
returns NDF | |
double | chi2 (void) const |
returns chi2. | |
double | reducedchi2 (void) const |
returns reduced-chi2 | |
unsigned | objectType (void) const |
returns object type | |
HepPoint3D | x (double) const |
returns position on 3D line | |
HepPoint3D | x0 (void) const |
returns 3D line component x(t)=x0 + t * k | |
HepVector3D | k (void) const |
int | approach (TMLink &, bool sagCorrection=true) const |
calculates the closest approach to a wire in real space. Results are stored in TMLink. Return value is negative if error happened. | |
int | approach_line (const HepPoint3D &, const HepVector3D &, HepPoint3D &onLine, HepPoint3D &onTrack) const |
caluculate closest points between a line and this track | |
int | approach_point (const HepPoint3D &, HepPoint3D &onTrack) const |
caluculate closest point between a point and this track | |
const HepPoint3D & | pivot (const HepPoint3D &) |
set new pivot | |
void | set (const HepPoint3D &, double t_dr, double t_phi0, double t_dz, double t_tanl) |
set track parameters,pivot | |
Vector | a (const Vector &) |
set track parameters | |
const SymMatrix & | Ea (const SymMatrix &) |
set error matrix | |
virtual unsigned | type (void) const |
returns type. Definition is depending on an object class. | |
virtual void | dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const |
dumps debug information. | |
const AList< TMLink > & | links (unsigned mask=0) const |
returns a list of masked TMLinks assigned to this track. 'mask' will be applied if mask is not 0. | |
unsigned | nLinks (unsigned mask=0) const |
returns # of masked TMLinks assigned to this track object. | |
const AList< TMLink > & | cores (unsigned mask=0) const |
returns a list of masked TMLinks for fit. 'mask' will be applied if mask is not 0. | |
unsigned | nCores (unsigned mask=0) const |
returns # of masked TMLinks for fit. 'mask' will be applied if mask is not 0. | |
void | update (void) const |
update cache. | |
void | append (TMLink &) |
appends a TMLink. | |
void | append (const AList< TMLink > &) |
appends TMLinks. | |
void | appendByApproach (AList< TMLink > &list, double maxSigma) |
appends TMLinks by approach. 'list' is an input. Unappended TMLinks will be removed from 'list' when returned. | |
void | appendByDistance (AList< TMLink > &list, double maxDistance) |
appends TMLinks by distance. 'list' is an input. Unappended TMLinks will be removed from 'list' when returned. | |
void | remove (TMLink &a) |
removes a TMLink. | |
void | remove (const AList< TMLink > &) |
removes TMLinks. | |
virtual void | refine (AList< TMLink > &list, double maxSigma) |
removes bad points by pull. The bad points are removed from the track, and are returned in 'list'. | |
virtual void | refine (double maxSigma) |
removes bad points by pull. The bad points are masked not to be used in fit. | |
virtual int | DropWorst () |
virtual void | removeLinks (void) |
virtual double | distance (const TMLink &) const |
returns distance to a position of TMLink in TMLink space. | |
virtual int | approach (TMLink &) const |
calculates the closest approach to a wire in real space. Results are stored in TMLink. Return value is negative if error happened. | |
unsigned | testByApproach (const TMLink &list, double sigma) const |
returns # of good hits to be appended. | |
unsigned | testByApproach (const AList< TMLink > &list, double sigma) const |
virtual int | fit (void) |
fits itself by a default fitter. Error was happened if return value is not zero. | |
const TMFitter *const | fitter (void) const |
returns a pointer to a default fitter. | |
const TMFitter *const | fitter (const TMFitter *) |
sets a default fitter. | |
void | falseFit () |
false Fit | |
TMLink * | operator[] (unsigned i) const |
const TTrackHEP *const | hep (void) const |
returns TTrackHEP. | |
unsigned | nHeps (void) const |
returns # of contributed TTrackHEP tracks. | |
const TTrackMC *const | mc (void) const |
returns a pointer to TTrackMC. | |
bool | fitted (void) const |
returns true if fitted. | |
bool | fittedWithCathode (void) const |
returns true if fitted with cathode hits(TEMPORARY). | |
Protected Attributes | |
AList< TMLink > | _links |
bool | _fitted |
bool | _fittedWithCathode |
TTrackMC * | _mc |
Private Attributes | |
HepPoint3D | _pivot |
double | _dr |
double | _phi0 |
double | _dz |
double | _tanl |
SymMatrix | _Ea |
double | _chi2 |
unsigned | _ndf |
double | _cos_phi0 |
double | _sin_phi0 |
Static Private Attributes | |
static const T3DLineFitter | _fitter = T3DLineFitter("T3DLine Default fitter") |
Friends | |
class | T3DLineFitter |
Definition at line 50 of file T3DLine.h.
T3DLine::T3DLine | ( | ) |
Constructors.
Definition at line 21 of file T3DLine.cxx.
References _cos_phi0, TTrackBase::_fitted, TTrackBase::_fittedWithCathode, _fitter, _sin_phi0, and TTrackBase::fitter().
00022 : TTrackBase(), 00023 _dr(0),_phi0(0),_dz(0),_tanl(0), 00024 _chi2(0),_ndf(0),_Ea(SymMatrix(4,0)), 00025 _pivot(ORIGIN){ 00026 00027 _cos_phi0 = 1; 00028 _sin_phi0 = 0; 00029 00030 //...Set a default fitter... 00031 fitter(& T3DLine::_fitter); 00032 00033 _fitted = false; 00034 _fittedWithCathode = false; 00035 }
T3DLine::T3DLine | ( | const TTrack & | ) |
Definition at line 37 of file T3DLine.cxx.
References _cos_phi0, TTrackBase::_fitted, TTrackBase::_fittedWithCathode, _fitter, _phi0, _sin_phi0, cos(), TTrackBase::fitter(), and sin().
00038 : TTrackBase((TTrackBase &) a), 00039 _dr(a.helix().dr()), 00040 _phi0(a.helix().phi0()), 00041 _dz(a.helix().dz()), 00042 _tanl(a.helix().tanl()), 00043 _chi2(0),_ndf(0),_Ea(SymMatrix(4,0)), 00044 _pivot(a.helix().pivot()){ 00045 00046 _cos_phi0 = cos(_phi0); 00047 _sin_phi0 = sin(_phi0); 00048 00049 //...Set a default fitter... 00050 fitter(& T3DLine::_fitter); 00051 00052 _fitted = false; 00053 _fittedWithCathode = false; 00054 }
T3DLine::T3DLine | ( | const T3DLine & | ) |
Definition at line 59 of file T3DLine.cxx.
References _cos_phi0, TTrackBase::_fitted, TTrackBase::_fittedWithCathode, _fitter, _phi0, _sin_phi0, cos(), TTrackBase::fitter(), and sin().
00060 : TTrackBase((TTrackBase &) a), 00061 _dr(a.dr()), 00062 _phi0(a.phi0()), 00063 _dz(a.dz()), 00064 _tanl(a.tanl()), 00065 _chi2(a.chi2()),_ndf(a.ndf()), 00066 _Ea(a.Ea()), 00067 _pivot(a.pivot()){ 00068 00069 _cos_phi0 = cos(_phi0); 00070 _sin_phi0 = sin(_phi0); 00071 00072 //...Set a default fitter... 00073 fitter(& T3DLine::_fitter); 00074 00075 _fitted = false; 00076 _fittedWithCathode = false; 00077 }
T3DLine::~T3DLine | ( | ) | [virtual] |
set track parameters
Definition at line 187 of file T3DLine.cxx.
References _cos_phi0, _dr, _dz, _phi0, _sin_phi0, _tanl, cos(), and sin().
00187 { 00188 _dr = ta[0]; 00189 _phi0 = ta[1]; 00190 _dz = ta[2]; 00191 _tanl = ta[3]; 00192 _cos_phi0 = cos(_phi0); 00193 _sin_phi0 = sin(_phi0); 00194 return(ta); 00195 }
Vector T3DLine::a | ( | void | ) | const |
void TTrackBase::append | ( | const AList< TMLink > & | ) | [inherited] |
appends TMLinks.
Definition at line 384 of file TTrackBase.cxx.
References TTrackBase::_fitted, TTrackBase::_fittedWithCathode, TTrackBase::_links, TTrackBase::_updated, genRecEmupikp::i, and WireHitUsed.
00384 { 00385 AList<TMLink> tmp; 00386 for (unsigned i = 0; i < a.length(); i++) { 00387 if ((_links.hasMember(a[i])) || (a[i]->hit()->state() & WireHitUsed)) { 00388 #ifdef TRKRECO_DEBUG_DETAIL 00389 std::cout << " TTrackBase::append(list) !!! "; 00390 std::cout << a[i]->wire()->name(); 00391 std::cout << " Hey!, this is already used! Don't mess with me."; 00392 std::cout << std::endl; 00393 #endif 00394 continue; 00395 } 00396 else { 00397 tmp.append(a[i]); 00398 } 00399 } 00400 _links.append(tmp); 00401 _updated = false; 00402 _fitted = false; 00403 _fittedWithCathode = false; // added by matsu ( 1999/05/24 ) 00404 }
void TTrackBase::append | ( | TMLink & | ) | [inherited] |
appends a TMLink.
Definition at line 362 of file TTrackBase.cxx.
References TTrackBase::_fitted, TTrackBase::_fittedWithCathode, TTrackBase::_links, TTrackBase::_updated, TMLink::hit(), TMDCWire::name(), TMDCWireHit::state(), TMLink::wire(), and WireHitUsed.
Referenced by TBuilderCosmic::buildStereo(), TBuilder0::buildStereo(), TBuilder::buildStereo(), TBuilder0::buildStereo0(), TBuilderCurl::buildStereoMC(), TBuilder::buildStereoNew(), THistogram::clusters(), THistogram::clusters0(), TCurlFinder::dividing2DTrack(), TrkReco::execute(), TConformalFinder::link(), TCurlFinder::make2DTrack(), TTrackManager::merge(), TTrackManager::salvageAssociateHits(), TSegment0::splitAV(), TSegment::splitAV(), TSegment0::splitParallel(), TSegment::splitParallel(), and TConformalFinder0::standardFinding().
00362 { 00363 if ((a.hit()->state() & WireHitUsed)) { 00364 #ifdef TRKRECO_DEBUG_DETAIL 00365 std::cout << "TTrackBase::append !!! " << a.wire()->name() 00366 << " this is already used by another track!" << std::endl; 00367 #endif 00368 return; 00369 } 00370 if (_links.hasMember(a)) { 00371 #ifdef TRKRECO_DEBUG_DETAIL 00372 std::cout << "TTrackBase::append !!! " << a.wire()->name() 00373 << " this is already included in this track!" << std::endl; 00374 #endif 00375 return; 00376 } 00377 _links.append(a); 00378 _updated = false; 00379 _fitted = false; 00380 _fittedWithCathode = false; // added by matsu ( 1999/05/24 ) 00381 }
void TTrackBase::appendByApproach | ( | AList< TMLink > & | list, | |
double | maxSigma | |||
) | [inherited] |
appends TMLinks by approach. 'list' is an input. Unappended TMLinks will be removed from 'list' when returned.
Definition at line 101 of file TTrackBase.cxx.
References TTrackBase::_fitted, TTrackBase::_links, TTrackBase::_updated, TTrackBase::approach(), TTrackBase::distance(), showlog::err, genRecEmupikp::i, and WireHitUsed.
Referenced by TBuilder0::appendClusters(), and TTrackManager::salvage().
00101 { 00102 #ifdef TRKRECO_DEBUG_DETAIL 00103 std::cout << " TTrackBase::appendByApproach ... sigma=" << maxSigma << std::endl; 00104 #endif 00105 00106 AList<TMLink> unused; 00107 unsigned n = list.length(); 00108 for (unsigned i = 0; i < n; i++) { 00109 TMLink & l = * list[i]; 00110 00111 if ((_links.hasMember(l)) || (l.hit()->state() & WireHitUsed)) 00112 continue; 00113 00114 //...Calculate closest approach... 00115 int err = approach(l); 00116 if (err < 0) { 00117 unused.append(l); 00118 continue; 00119 } 00120 00121 //...Calculate sigma... 00122 float distance = (l.positionOnWire() - l.positionOnTrack()).mag(); 00123 float diff = fabs(distance - l.drift()); 00124 float sigma = diff / l.dDrift(); 00125 00126 //...For debug... 00127 #ifdef TRKRECO_DEBUG_DETAIL 00128 std::cout << " sigma=" << sigma; 00129 std::cout << ",dist=" << distance; 00130 std::cout << ",diff=" << diff; 00131 std::cout << ",err=" << l.hit()->dDrift() << ","; 00132 if (sigma < maxSigma) std::cout << "ok,"; 00133 else std::cout << "X,"; 00134 l.dump("mc"); 00135 #endif 00136 00137 //...Make sigma cut... 00138 if (sigma > maxSigma) { 00139 unused.append(l); 00140 continue; 00141 } 00142 00143 //...OK... 00144 _links.append(l); 00145 _updated = false; 00146 _fitted = false; 00147 } 00148 list.remove(unused); 00149 }
void TTrackBase::appendByDistance | ( | AList< TMLink > & | list, | |
double | maxDistance | |||
) | [inherited] |
appends TMLinks by distance. 'list' is an input. Unappended TMLinks will be removed from 'list' when returned.
Definition at line 152 of file TTrackBase.cxx.
00152 { 00153 std::cout << "TTrackBase::appendByDistance !!! not implemented" << std::endl; 00154 list.removeAll(); 00155 }
int TTrackBase::approach | ( | TMLink & | ) | const [virtual, inherited] |
calculates the closest approach to a wire in real space. Results are stored in TMLink. Return value is negative if error happened.
Reimplemented in TTrack.
Definition at line 95 of file TTrackBase.cxx.
Referenced by TTrackBase::appendByApproach(), and TTrackBase::testByApproach().
00095 { 00096 std::cout << "TTrackBase::approach !!! not implemented" << std::endl; 00097 return -1; 00098 }
calculates the closest approach to a wire in real space. Results are stored in TMLink. Return value is negative if error happened.
Definition at line 202 of file T3DLine.cxx.
References approach_line(), TMLink::positionOnTrack(), TMLink::positionOnWire(), v, w, and TMLink::wire().
00202 { 00203 00204 const TMDCWire& w=*l.wire(); 00205 HepPoint3D xw = w.xyPosition(); 00206 HepPoint3D wireBackwardPosition = w.backwardPosition(); 00207 HepVector3D v = w.direction(); 00208 00209 HepPoint3D onWire,onTrack; 00210 00211 if(approach_line(wireBackwardPosition,v,onWire,onTrack)<0) 00212 return(-1); 00213 00214 // onWire,onTrack filled 00215 00216 if(!doSagCorrection){ 00217 l.positionOnWire(onWire); 00218 l.positionOnTrack(onTrack); 00219 return(0); // no sag correction 00220 } 00221 // Sag correction 00222 // loop for sag correction 00223 double onWire_y = onWire.y(); 00224 double onWire_z = onWire.z(); 00225 00226 unsigned nTrial = 1; 00227 while(nTrial<100){ 00228 w.wirePosition(onWire_z,xw,wireBackwardPosition,(HepVector3D&)v); 00229 if(approach_line(wireBackwardPosition,v,onWire,onTrack)<0) 00230 return(-1); 00231 if(fabs(onWire_y - onWire.y())<0.0001) break; // |dy|< 1 micron 00232 onWire_y = onWire.y(); 00233 onWire_z = onWire.z(); 00234 00235 nTrial++; 00236 } 00237 00238 l.positionOnWire(onWire); 00239 l.positionOnTrack(onTrack); 00240 return(nTrial); 00241 }
int T3DLine::approach_line | ( | const HepPoint3D & | , | |
const HepVector3D & | , | |||
HepPoint3D & | onLine, | |||
HepPoint3D & | onTrack | |||
) | const |
caluculate closest points between a line and this track
Definition at line 243 of file T3DLine.cxx.
References k(), s, t(), and x0().
Referenced by approach().
00244 { 00245 // line = [w0] + s * [v] -> [onLine] 00246 // trk = [x0] + t * [k] -> [onTrack] 00247 // if [v]//[k] then return(-1) error 00248 00249 const HepVector3D k = this->k(); 00250 const double v_k = v.dot(k); 00251 const double v_2 = v.mag2(); 00252 const double k_2 = k.mag2(); 00253 const double tk = v_k*v_k - v_2*k_2; 00254 if(tk==0) return(-1); 00255 00256 const HepPoint3D x0 = this->x0(); 00257 const HepPoint3D dx = x0 - w0; 00258 const double t = dx.dot( v_2 * k - v_k * v)/tk; 00259 const double s = dx.dot( v_k * k - k_2 * v)/tk; 00260 00261 onLine = w0 + s * v; 00262 onTrack = x0 + t * k; 00263 return(0); 00264 }
int T3DLine::approach_point | ( | const HepPoint3D & | , | |
HepPoint3D & | onTrack | |||
) | const |
caluculate closest point between a point and this track
Definition at line 266 of file T3DLine.cxx.
References k(), t(), and x0().
00266 { 00267 // trk = [x0] + t * [k] -> [onTrack] 00268 // if [v]//[k] then return(-1) error 00269 00270 const HepVector3D k = this->k(); 00271 const HepPoint3D x0 = this->x0(); 00272 const HepPoint3D dx = p0 - x0; 00273 const double t = dx.dot(k)/k.mag2(); 00274 00275 onTrack = x0 + t * k; 00276 return(0); 00277 }
double T3DLine::chi2 | ( | void | ) | const |
returns chi2.
Definition at line 131 of file T3DLine.cxx.
References _chi2.
00131 { 00132 return _chi2; 00133 }
const AList< TMLink > & TTrackBase::cores | ( | unsigned | mask = 0 |
) | const [inherited] |
returns a list of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
Definition at line 317 of file TTrackBase.cxx.
References TTrackBase::_cores, TTrackBase::_updated, and TTrackBase::update().
Referenced by TBuilder::buildStereoNew(), TConformalFinder::expand(), TTrack::movePivot(), TRunge::SetFlightLength(), and TTrack::szPosition().
00317 { 00318 if (mask) 00319 std::cout << "TTrackBase::cores !!! mask is not supported" << std::endl; 00320 if (! _updated) update(); 00321 return _cores; 00322 }
double T3DLine::cosPhi0 | ( | void | ) | const |
Definition at line 95 of file T3DLine.cxx.
References _cos_phi0.
00095 { 00096 return _cos_phi0; 00097 }
double TTrackBase::distance | ( | const TMLink & | ) | const [virtual, inherited] |
returns distance to a position of TMLink in TMLink space.
Reimplemented in TLine0, and TMLine.
Definition at line 89 of file TTrackBase.cxx.
Referenced by TTrackBase::appendByApproach(), TTrack::fit2D(), and TTrackBase::testByApproach().
00089 { 00090 std::cout << "TTrackBase::distance !!! not implemented" << std::endl; 00091 return 0.; 00092 }
double T3DLine::dr | ( | void | ) | const |
Track parameters.
Definition at line 79 of file T3DLine.cxx.
References _dr.
Referenced by pivot().
00079 { 00080 return _dr; 00081 }
int TTrackBase::DropWorst | ( | ) | [virtual, inherited] |
Definition at line 212 of file TTrackBase.cxx.
References TTrackBase::_fitted, TTrackBase::_links, TTrackBase::_updated, and genRecEmupikp::i.
Referenced by TrkReco::execute().
00212 { 00213 AList<TMLink> bad; 00214 int jbad=-1; 00215 double sigma=0; 00216 unsigned n = _links.length(); 00217 double chi2=0; 00218 for (unsigned i = 0; i < n; i++){ 00219 // if(g_sigmalyr1)g_sigmalyr1->fill(sqrt(_links[i]->pull()),_links[i]->wire()->layerId()); 00220 chi2+=_links[i]->pull(); 00221 if (_links[i]->pull() > sigma){ 00222 jbad=i; 00223 sigma = _links[i]->pull(); 00224 } 00225 } 00226 00227 chi2=chi2/n; 00228 //if(sigma>9){bad.append(_links[jbad]);if(g_sigmalyr)g_sigmalyr->fill(sqrt(sigma),_links[jbad]->wire()->layerId());} 00229 // if(sigma>20.25&&chi2>2.08){bad.append(_links[jbad]);} 00230 if(sigma>9){bad.append(_links[jbad]);} 00231 if (bad.length()) { 00232 _links.remove(bad); 00233 _fitted = false; 00234 _updated = false; 00235 } 00236 return bad.length(); 00237 }
void TTrackBase::dump | ( | const std::string & | message = std::string("") , |
|
const std::string & | prefix = std::string("") | |||
) | const [virtual, inherited] |
dumps debug information.
Reimplemented in TCircle, TLine0, TMLine, TSegment, TSegment0, and TTrack.
Definition at line 58 of file TTrackBase.cxx.
References TTrackBase::_links, TTrackBase::_updated, Dump(), TTrackBase::mc(), RealDBUtil::npos, and TTrackBase::update().
Referenced by TTrack::dump(), TSegment0::dump(), TSegment::dump(), TMLine::dump(), TLine0::dump(), and TCircle::dump().
00058 { 00059 bool mc = (msg.find("mc") != std::string::npos); 00060 bool pull = (msg.find("pull") != std::string::npos); 00061 bool flag = (msg.find("flag") != std::string::npos); 00062 bool detail = (msg.find("detail") != std::string::npos); 00063 if (detail) 00064 mc = pull = flag = true; 00065 00066 if (detail || (msg.find("layer") != std::string::npos)) { 00067 if (! _updated) update(); 00068 } 00069 if (detail || (msg.find("hits") != std::string::npos)) { 00070 Dump(_links, msg, pre); 00071 } 00072 }
double T3DLine::dz | ( | void | ) | const |
Definition at line 87 of file T3DLine.cxx.
References _dz.
Referenced by pivot().
00087 { 00088 return _dz; 00089 }
const SymMatrix & T3DLine::Ea | ( | void | ) | const |
returns error matrix
Definition at line 116 of file T3DLine.cxx.
References _Ea.
00116 { 00117 return(_Ea); 00118 }
void TTrackBase::falseFit | ( | ) | [inline, inherited] |
false Fit
Definition at line 229 of file TTrackBase.h.
References TTrackBase::_fitted, and TTrackBase::_fittedWithCathode.
00229 { 00230 _fitted = false; 00231 _fittedWithCathode = false; 00232 }
int TTrackBase::fit | ( | void | ) | [virtual, inherited] |
fits itself by a default fitter. Error was happened if return value is not zero.
Definition at line 357 of file TTrackBase.cxx.
References TTrackBase::_fitter, and TMFitter::fit().
Referenced by TBuilder0::buildRphi(), TBuilder::buildRphi(), TBuilderCosmic::buildStereo(), TBuilder0::buildStereo0(), and TConformalFinder::expand().
bool TTrackBase::fitted | ( | void | ) | const [inline, inherited] |
returns true if fitted.
Definition at line 222 of file TTrackBase.h.
References TTrackBase::_fitted.
Referenced by TCosmicFitter::fit(), TBuilder::searchLine(), and TMSelector::select().
00222 { 00223 return _fitted; 00224 }
bool TTrackBase::fittedWithCathode | ( | void | ) | const [inline, inherited] |
returns true if fitted with cathode hits(TEMPORARY).
Definition at line 243 of file TTrackBase.h.
References TTrackBase::_fittedWithCathode.
00243 { 00244 return _fittedWithCathode; 00245 }
sets a default fitter.
Definition at line 261 of file TTrackBase.h.
References TTrackBase::_fitted, and TTrackBase::_fitter.
const TMFitter *const TTrackBase::fitter | ( | void | ) | const [inline, inherited] |
returns a pointer to a default fitter.
Definition at line 255 of file TTrackBase.h.
References TTrackBase::_fitter.
Referenced by T3DLine(), TCircle::TCircle(), TLine0::TLine0(), TMLine::TMLine(), TRunge::TRunge(), and TTrack::TTrack().
00255 { 00256 return _fitter; 00257 }
Helix T3DLine::helix | ( | void | ) | const |
approximated helix class
Definition at line 120 of file T3DLine.cxx.
References _dr, _dz, _phi0, _pivot, _tanl, and a().
Referenced by TBuilderCosmic::buildStereo().
00120 { 00121 HepVector a(5); 00122 a[0]=_dr;a[1]=_phi0;a[2]=1e-10;a[3]=_dz;a[4]=_tanl; 00123 Helix _helix(_pivot,a); 00124 return _helix; 00125 }
const TTrackHEP *const TTrackBase::hep | ( | void | ) | const [inherited] |
returns TTrackHEP.
Definition at line 407 of file TTrackBase.cxx.
References TTrackBase::_hep, TTrackBase::_links, TTrackBase::_nHeps, genRecEmupikp::i, ganga-rec::j, max, and TTrackBase::mc().
Referenced by TTrackBase::nHeps().
00407 { 00408 unsigned n = _links.length(); 00409 CAList<TTrackHEP> hepList; 00410 CList<unsigned> hepCounter; 00411 for (unsigned i = 0; i < n; i++) { 00412 const TTrackHEP * hep = _links[i]->hit()->mc()->hep(); 00413 unsigned nH = hepList.length(); 00414 bool found = false; 00415 for (unsigned j = 0; j < nH; j++) { 00416 if (hepList[j] == hep) { 00417 found = true; 00418 ++(* hepCounter[j]); 00419 } 00420 } 00421 00422 if (! found) { 00423 hepList.append(hep); 00424 unsigned c = 0; 00425 hepCounter.append(c); 00426 } 00427 } 00428 00429 _nHeps = hepList.length(); 00430 _hep = 0; 00431 unsigned max = 0; 00432 for (unsigned i = 0; i < _nHeps; i++) { 00433 if ((* hepCounter[i]) > max) { 00434 max = (* hepCounter[i]); 00435 _hep = hepList[i]; 00436 } 00437 } 00438 00439 return _hep; 00440 }
HepVector3D T3DLine::k | ( | void | ) | const |
Definition at line 158 of file T3DLine.cxx.
References _cos_phi0, _sin_phi0, and _tanl.
Referenced by approach_line(), and approach_point().
00158 { 00159 HepPoint3D p(-_sin_phi0,_cos_phi0,_tanl); 00160 return p; 00161 }
const AList< TMLink > & TTrackBase::links | ( | unsigned | mask = 0 |
) | const [inherited] |
returns a list of masked TMLinks assigned to this track. 'mask' will be applied if mask is not 0.
Definition at line 297 of file TTrackBase.cxx.
References TTrackBase::_links.
Referenced by TConformalFinder0::appendCluster(), TBuilder::build(), TBuilderCurl::buildStereo(), TBuilderCosmic::buildStereo(), TBuilder0::buildStereo0(), TBuilderCurl::buildStereoMC(), TBuilder::buildStereoNew(), TBuilderCurl::check(), TCurlFinder::check2DCircle(), TCurlFinder::check3DTrack(), TCurlFinder::dividing2DTrack(), TCurlFinder::dumpType1(), TCurlFinder::dumpType2(), TrkReco::execute(), TConformalFinder0::findCloseClusters(), TFastFinder::findCloseHits(), TConformalFinder0::findCloseHits(), TConformalFinder0::findClusterLink(), TCosmicFitter::fit(), TCurlFinder::fitWDD(), TCurlFinder::make2DTrack(), TCurlFinder::make3DTrack(), TCurlFinder::makeWithMC(), TCurlFinder::mask3DTrack(), TTrackManager::merge(), TTrack::movePivot(), TCurlFinder::plotCircle(), TCurlFinder::plotTrack(), TMSelector::preSelect(), TCurlFinder::removeStereo(), TConformalFinder::salvage(), TCurlFinder::salvage3DTrack(), TBuilder::searchLine(), TMDCTsf::segments(), TBuilderCurl::setArcZ(), TConformalFinder::slowFinding2D(), TSegment0::splitAV(), TSegment::splitAV(), TSegment::splitTsf(), TConformalFinder::stereoSegments(), TSegment0::superLayerId(), TSegment::superLayerId(), TTrack::szPosition(), TCurlFinder::trace2DTrack(), TCurlFinder::trace3DTrack(), and TSegment::width().
00297 { 00298 if (mask == 0) return _links; 00299 00300 std::cout << "TTrackBase::links !!! mask is not supportted yet" << std::endl; 00301 return _links; 00302 }
const TTrackMC *const TTrackBase::mc | ( | void | ) | const [inline, inherited] |
returns a pointer to TTrackMC.
Definition at line 249 of file TTrackBase.h.
References TTrackBase::_mc.
Referenced by TTrackBase::dump(), and TTrackBase::hep().
00249 { 00250 return _mc; 00251 }
unsigned TTrackBase::nCores | ( | unsigned | mask = 0 |
) | const [inherited] |
returns # of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
Definition at line 325 of file TTrackBase.cxx.
References TTrackBase::_cores, TTrackBase::_updated, and TTrackBase::update().
Referenced by TTrack::dump(), and TConformalFinder::expand().
00325 { 00326 if (mask) 00327 std::cout << "TTrackBase::nCores !!! mask is not supported" << std::endl; 00328 if (! _updated) update(); 00329 return _cores.length(); 00330 }
unsigned T3DLine::ndf | ( | void | ) | const |
returns NDF
Definition at line 127 of file T3DLine.cxx.
References _ndf.
00127 { 00128 return _ndf; 00129 }
unsigned TTrackBase::nHeps | ( | void | ) | const [inherited] |
returns # of contributed TTrackHEP tracks.
Definition at line 443 of file TTrackBase.cxx.
References TTrackBase::_nHeps, and TTrackBase::hep().
unsigned TTrackBase::nLinks | ( | unsigned | mask = 0 |
) | const [inherited] |
returns # of masked TMLinks assigned to this track object.
Definition at line 305 of file TTrackBase.cxx.
References TTrackBase::_links, and genRecEmupikp::i.
Referenced by TBuilderCurl::buildStereo(), TBuilderCurl::buildStereoMC(), TBuilderCurl::check(), TCurlFinder::check2DCircle(), TCurlFinder::check3DTrack(), TSegment0::clusterType(), TSegment::clusterType(), TCurlFinder::dividing2DTrack(), TCurlFinder::dumpType1(), TCurlFinder::dumpType2(), TCurlFinder::make2DTrack(), TCurlFinder::makeWithMC(), TCurlFinder::merge3DTrack(), TCurlFinder::plotCircle(), TCurlFinder::plotTrack(), TMSelector::preSelect(), TCurlFinder::salvage3DTrack(), TBuilderCurl::setArcZ(), TSegment0::splitComplicated(), TSegment::splitComplicated(), TSegment0::splitParallel(), TSegment::splitParallel(), TSegment0::updateType(), and TSegment::updateType().
00305 { 00306 unsigned n = _links.length(); 00307 if (mask == 0) return n; 00308 unsigned nn = 0; 00309 for (unsigned i = 0; i < n; i++) { 00310 const TMDCWireHit & h = * _links[i]->hit(); 00311 if (h.state() & mask) ++nn; 00312 } 00313 return nn; 00314 }
unsigned T3DLine::objectType | ( | void | ) | const [inline, virtual] |
returns object type
Reimplemented from TTrackBase.
Definition at line 150 of file T3DLine.h.
References Line3D.
00150 { 00151 return Line3D; 00152 }
TMLink * TTrackBase::operator[] | ( | unsigned | i | ) | const [inline, inherited] |
double T3DLine::phi0 | ( | void | ) | const |
const HepPoint3D & T3DLine::pivot | ( | const HepPoint3D & | ) |
set new pivot
Definition at line 163 of file T3DLine.cxx.
References _cos_phi0, _dr, _dz, _pivot, _sin_phi0, _tanl, dr(), and dz().
00163 { 00164 double dr=(_pivot.x()-newpivot.x())*_cos_phi0 00165 +(_pivot.y()-newpivot.y())*_sin_phi0 + _dr; 00166 double dz=_pivot.z()-newpivot.z()+_dz 00167 +_tanl*((_pivot.x()-newpivot.x())*_sin_phi0 00168 +(newpivot.y()-_pivot.y())*_cos_phi0); 00169 _dr=dr; 00170 _dz=dz; 00171 _pivot=newpivot; 00172 return _pivot; 00173 }
const HepPoint3D & T3DLine::pivot | ( | void | ) | const |
pivot position
Definition at line 103 of file T3DLine.cxx.
References _pivot.
00103 { 00104 return _pivot; 00105 }
double T3DLine::reducedchi2 | ( | void | ) | const |
void TTrackBase::refine | ( | double | maxSigma | ) | [virtual, inherited] |
removes bad points by pull. The bad points are masked not to be used in fit.
Definition at line 194 of file TTrackBase.cxx.
References TTrackBase::_fitted, TTrackBase::_updated, Dump(), and TTrackBase::refineMain().
00194 { 00195 AList<TMLink> bad = refineMain(sigma); 00196 // for (unsigned i = 0; i < bad.length(); i++) { 00197 // const TMDCWireHit * hit = bad[i]->hit(); 00198 // hit->state(hit->state() | WireHitInvalidForFit); 00199 // } 00200 00201 #ifdef TRKRECO_DEBUG_DETAIL 00202 std::cout << " refine ... sigma=" << sigma << std::endl; 00203 Dump(bad, "detail sort", " "); 00204 #endif 00205 00206 if (bad.length()) { 00207 _fitted = false; 00208 _updated = false; 00209 } 00210 }
void TTrackBase::refine | ( | AList< TMLink > & | list, | |
double | maxSigma | |||
) | [virtual, inherited] |
removes bad points by pull. The bad points are removed from the track, and are returned in 'list'.
Definition at line 170 of file TTrackBase.cxx.
References TTrackBase::_fitted, TTrackBase::_links, TTrackBase::_updated, Dump(), and TTrackBase::refineMain().
Referenced by TBuilder0::appendClusters(), TBuilderCurl::buildStereo(), TBuilderCosmic::buildStereo(), TBuilder0::buildStereo(), TBuilder::buildStereo(), TBuilder0::buildStereo0(), and TBuilderCurl::buildStereoMC().
00170 { 00171 AList<TMLink> bad = refineMain(sigma); 00172 #ifdef TRKRECO_DEBUG 00173 std::cout << " refine ... sigma=" << sigma << ", # of rejected hits="; 00174 std::cout << bad.length() << std::endl; 00175 #endif 00176 #ifdef TRKRECO_DEBUG 00177 Dump(bad, "sort pull mc", " "); 00178 #endif 00179 00180 if (bad.length()) { 00181 _links.remove(bad); 00182 list.append(bad); 00183 _fitted = false; 00184 _updated = false; 00185 } 00186 }
void TTrackBase::remove | ( | const AList< TMLink > & | ) | [inline, inherited] |
removes TMLinks.
Definition at line 213 of file TTrackBase.h.
References TTrackBase::_fitted, TTrackBase::_fittedWithCathode, TTrackBase::_links, and TTrackBase::_updated.
00213 { 00214 _links.remove(a); 00215 _updated = false; 00216 _fitted = false; 00217 _fittedWithCathode = false; // mod. by matsu ( 1999/05/24 ) 00218 }
void TTrackBase::remove | ( | TMLink & | a | ) | [inline, inherited] |
removes a TMLink.
Definition at line 204 of file TTrackBase.h.
References TTrackBase::_fitted, TTrackBase::_fittedWithCathode, TTrackBase::_links, and TTrackBase::_updated.
Referenced by TConformalFinder0::appendClusters2(), TBuilder::buildStereoNew(), TCurlFinder::dividing2DTrack(), TCurlFinder::makeWithMC(), TTrackManager::maskCurl(), TTrackManager::maskNormal(), TCurlFinder::removeStereo(), TBuilder::searchLine(), TConformalFinder0::specialFinding(), TSegment0::splitComplicated(), and TSegment::splitComplicated().
00204 { 00205 _links.remove(a); 00206 _updated = false; 00207 _fitted = false; 00208 _fittedWithCathode = false; // mod. by matsu ( 1999/05/24 ) 00209 }
void TTrackBase::removeLinks | ( | void | ) | [virtual, inherited] |
Definition at line 189 of file TTrackBase.cxx.
References TTrackBase::_links.
Referenced by TBuilderCosmic::buildStereo(), and TrkReco::execute().
00189 { 00190 _links.removeAll(); 00191 }
void T3DLine::set | ( | const HepPoint3D & | , | |
double | t_dr, | |||
double | t_phi0, | |||
double | t_dz, | |||
double | t_tanl | |||
) |
set track parameters,pivot
Definition at line 175 of file T3DLine.cxx.
References _cos_phi0, _dr, _dz, _phi0, _pivot, _sin_phi0, _tanl, cos(), and sin().
00176 { 00177 00178 _pivot = t_pivot; 00179 _dr = t_dr; 00180 _phi0 = t_phi0; 00181 _dz = t_dz; 00182 _tanl = t_tanl; 00183 _cos_phi0 = cos(_phi0); 00184 _sin_phi0 = sin(_phi0); 00185 }
double T3DLine::sinPhi0 | ( | void | ) | const |
Definition at line 99 of file T3DLine.cxx.
References _sin_phi0.
00099 { 00100 return _sin_phi0; 00101 }
double T3DLine::tanl | ( | void | ) | const |
unsigned TTrackBase::testByApproach | ( | const AList< TMLink > & | list, | |
double | sigma | |||
) | const [inherited] |
Definition at line 240 of file TTrackBase.cxx.
References genRecEmupikp::i, and TTrackBase::testByApproach().
00240 { 00241 #ifdef TRKRECO_DEBUG_DETAIL 00242 std::cout << " TTrackBase::testByApproach ... sigma=" << maxSigma << std::endl; 00243 #endif 00244 00245 unsigned nOK = 0; 00246 unsigned n = list.length(); 00247 for (unsigned i = 0; i < n; i++) { 00248 TMLink & l = * list[i]; 00249 nOK += testByApproach(l, maxSigma); 00250 } 00251 return nOK; 00252 }
unsigned TTrackBase::testByApproach | ( | const TMLink & | list, | |
double | sigma | |||
) | const [inherited] |
returns # of good hits to be appended.
Definition at line 255 of file TTrackBase.cxx.
References TTrackBase::approach(), TMDCWireHit::dDrift(), TMLink::distance(), TTrackBase::distance(), TMDCWireHit::drift(), TMLink::dump(), showlog::err, TMLink::hit(), and TMLink::pull().
Referenced by TTrackBase::testByApproach().
00255 { 00256 #ifdef TRKRECO_DEBUG_DETAIL 00257 std::cout << " TTrackBase::testByApproach ... sigma=" << maxSigma << std::endl; 00258 #endif 00259 TMLink l = link; 00260 00261 //...Calculate closest approach... 00262 int err = approach(l); 00263 if (err < 0) return 0; 00264 //...Calculate sigma... 00265 float distance = l.distance(); 00266 float diff = fabs(distance - l.hit()->drift()); 00267 float sigma = diff / l.hit()->dDrift(); 00268 l.pull(sigma * sigma); 00269 00270 //...For debug... 00271 #ifdef TRKRECO_DEBUG_DETAIL 00272 std::cout << " sigma=" << sigma; 00273 std::cout << ",dist=" << distance; 00274 std::cout << ",diff=" << diff << ","; 00275 if (sigma < maxSigma) std::cout << "ok,"; 00276 else std::cout << "X,"; 00277 l.dump("mc"); 00278 #endif 00279 00280 //...Make sigma cut... 00281 if (sigma < maxSigma) return 1; 00282 00283 return 0; 00284 }
unsigned TTrackBase::type | ( | void | ) | const [inline, virtual, inherited] |
returns type. Definition is depending on an object class.
Reimplemented in TTrack.
Definition at line 274 of file TTrackBase.h.
void TTrackBase::update | ( | void | ) | const [inherited] |
update cache.
Reimplemented in TSegment, and TSegment0.
Definition at line 75 of file TTrackBase.cxx.
References TTrackBase::_cores, TTrackBase::_links, TTrackBase::_updated, genRecEmupikp::i, TMDCWireHit::state(), WireHitFittingValid, and WireHitInvalidForFit.
Referenced by TTrackBase::cores(), TTrackBase::dump(), and TTrackBase::nCores().
00075 { 00076 _cores.removeAll(); 00077 unsigned n = _links.length(); 00078 for (unsigned i = 0; i < n; i++) { 00079 TMLink * l = _links[i]; 00080 const TMDCWireHit & h = * l->hit(); 00081 if (h.state() & WireHitInvalidForFit) continue; 00082 if (! (h.state() & WireHitFittingValid)) continue; 00083 _cores.append(l); 00084 } 00085 _updated = true; 00086 }
HepPoint3D T3DLine::x | ( | double | ) | const |
returns position on 3D line
Definition at line 143 of file T3DLine.cxx.
References _cos_phi0, _dr, _dz, _pivot, _sin_phi0, and _tanl.
00143 { 00144 double tx= _pivot.x() + _dr * _cos_phi0 - t * _sin_phi0; 00145 double ty= _pivot.y() + _dr * _sin_phi0 + t * _cos_phi0; 00146 double tz= _pivot.z() + _dz + t * _tanl; 00147 HepPoint3D p(tx,ty,tz); 00148 return p; 00149 }
HepPoint3D T3DLine::x0 | ( | void | ) | const |
returns 3D line component x(t)=x0 + t * k
Definition at line 151 of file T3DLine.cxx.
References _cos_phi0, _dr, _dz, _pivot, and _sin_phi0.
Referenced by approach_line(), and approach_point().
00151 { 00152 double tx= _pivot.x() + _dr * _cos_phi0; 00153 double ty= _pivot.y() + _dr * _sin_phi0; 00154 double tz= _pivot.z() + _dz; 00155 HepPoint3D p(tx,ty,tz); 00156 return p; 00157 }
friend class T3DLineFitter [friend] |
double T3DLine::_chi2 [private] |
double T3DLine::_cos_phi0 [private] |
double T3DLine::_dr [private] |
double T3DLine::_dz [private] |
SymMatrix T3DLine::_Ea [private] |
bool TTrackBase::_fitted [mutable, protected, inherited] |
Definition at line 162 of file TTrackBase.h.
Referenced by TMLine::a(), TLine0::a(), TTrackBase::append(), TTrackBase::appendByApproach(), TMLine::appendByszdistance(), TLine0::appendByszdistance(), TMLine::appendSLY(), TLine0::appendSLY(), TMLine::b(), TLine0::b(), TCircle::center(), TCircle::charge(), TTrack::chi2(), TMLine::chi2(), TLine0::chi2(), TSegment0::direction(), TSegment::direction(), TMLine::distance(), TLine0::distance(), TTrackBase::DropWorst(), TSegment0::dump(), TSegment::dump(), TCircle::dump(), TTrackBase::falseFit(), THelixFitter::fit(), TCosmicFitter::fit(), TMLine::fit2(), TLine0::fit2(), TMLine::fit2p(), TLine0::fit2p(), TMLine::fit2s(), TLine0::fit2s(), TMLine::fit2sp(), TLine0::fit2sp(), TCircle::fitForCurl(), TTrackBase::fitted(), TTrackBase::fitter(), TCircle::impact(), TSegment0::innerMostLayer(), TSegment::innerMostLayer(), TSegment::inners(), TSegment0::innerWidth(), TSegment::innerWidth(), TTrack::ndf(), TSegment0::outerMostLayer(), TSegment::outerMostLayer(), TSegment::outers(), TSegment0::outerWidth(), TSegment::outerWidth(), TSegment0::position(), TSegment::position(), TCircle::pt(), TCircle::radius(), TMLine::reducedChi2(), TLine0::reducedChi2(), TTrackBase::refine(), TMLine::refine(), TLine0::refine(), TTrack::refine2D(), TTrackBase::remove(), TMLine::removeChits(), TLine0::removeChits(), TMLine::removeSLY(), TLine0::removeSLY(), T3DLine(), TRunge::TRunge(), TSegment::TSegment(), TSegment0::TSegment0(), TTrack::TTrack(), TSegment0::update(), TSegment::update(), TSegment0::updateType(), and TSegment::updateType().
bool TTrackBase::_fittedWithCathode [mutable, protected, inherited] |
Definition at line 163 of file TTrackBase.h.
Referenced by TTrackBase::append(), TTrackBase::falseFit(), TTrackBase::fittedWithCathode(), TTrackBase::remove(), T3DLine(), TRunge::TRunge(), and TTrack::TTrack().
const T3DLineFitter T3DLine::_fitter = T3DLineFitter("T3DLine Default fitter") [static, private] |
AList<TMLink> TTrackBase::_links [protected, inherited] |
Definition at line 161 of file TTrackBase.h.
Referenced by TTrackBase::append(), TTrackBase::appendByApproach(), TMLine::appendByszdistance(), TLine0::appendByszdistance(), TMLine::appendSLY(), TLine0::appendSLY(), TTrack::assign(), TBuilderCurl::buildStereo(), TMLine::chi2(), TLine0::chi2(), TTrackBase::DropWorst(), TTrackBase::dump(), TTrack::dump(), TSegment0::dump(), TSegment::dump(), TMLine::dump(), TLine0::dump(), TCircle::dump(), TSegment::expandSeg(), TMLine::fit2(), TLine0::fit2(), TTrack::fit2D(), TMLine::fit2p(), TLine0::fit2p(), TMLine::fit2s(), TLine0::fit2s(), TMLine::fit2sp(), TLine0::fit2sp(), TCircle::fitForCurl(), TTrackBase::hep(), TTrackBase::links(), TTrack::movePivot(), TTrackBase::nLinks(), TTrackBase::operator[](), TSegment0::rangeX(), TSegment::rangeX(), TMLine::reducedChi2(), TLine0::reducedChi2(), TTrackBase::refine(), TMLine::refine(), TLine0::refine(), TTrack::refine2D(), TTrackBase::refineMain(), TTrackBase::remove(), TMLine::removeChits(), TLine0::removeChits(), TTrackBase::removeLinks(), TMLine::removeSLY(), TLine0::removeSLY(), TSegment::segSalvage(), TSegment0::solveDualHits(), TSegment::solveDualHits(), TSegment::solveLR(), TSegment::solveThreeHits(), TSegment0::splitAV(), TSegment::splitAV(), TSegment0::splitComplicated(), TSegment::splitComplicated(), TSegment0::splitDual(), TSegment::splitDual(), TSegment0::splitParallel(), TSegment::splitParallel(), TSegment::splitTsf(), TSegment::TSegment(), TSegment0::TSegment0(), TTrack::TTrack(), TTrackBase::update(), TSegment0::update(), TSegment::update(), TSegment0::updateDuality(), TSegment::updateDuality(), TSegment0::updateType(), and TSegment::updateType().
TTrackMC* TTrackBase::_mc [protected, inherited] |
unsigned T3DLine::_ndf [private] |
double T3DLine::_phi0 [private] |
HepPoint3D T3DLine::_pivot [private] |
double T3DLine::_sin_phi0 [private] |
double T3DLine::_tanl [private] |