#include <TrkHelixRep.h>
Inheritance diagram for TrkHelixRep:
Public Types | |
typedef std::unary_function< TrkFitStatus, bool > | predicate_type |
typedef std::unary_function< TrkFitStatus, bool > | predicate_type |
Public Member Functions | |
virtual void | activateHot (TrkHitOnTrk *theHot) |
virtual void | activateHot (TrkHitOnTrk *theHot) |
template<class T> | |
void | addHistory (std::pair< T, T > p) |
template<class T> | |
void | addHistory (T begin, T end) |
virtual void | addHistory (const TrkErrCode &status, const char *modulename) |
template<class T> | |
void | addHistory (std::pair< T, T > p) |
template<class T> | |
void | addHistory (T begin, T end) |
virtual void | addHistory (const TrkErrCode &status, const char *modulename) |
virtual void | addHot (TrkHitOnTrk *theHot) |
virtual void | addHot (TrkHitOnTrk *theHot) |
virtual double | arrivalTime (double fltL) const |
virtual double | arrivalTime (double fltL) const |
history_iterator | beginHistory () const |
history_iterator | beginHistory () const |
virtual int | charge () const |
virtual int | charge () const |
double | chisq () const |
double | chisq () const |
virtual ChisqConsistency | chisqConsistency () const |
virtual ChisqConsistency | chisqConsistency () const |
virtual TrkHelixRep * | clone (TrkRecoTrk *newTrack) const |
virtual TrkHelixRep * | clone (TrkRecoTrk *newTrack) const |
virtual TrkHelixRep * | cloneNewHypo (PdtPid::PidType hypo) |
virtual TrkHelixRep * | cloneNewHypo (PdtPid::PidType hypo) |
virtual void | deactivateHot (TrkHitOnTrk *theHot) |
virtual void | deactivateHot (TrkHitOnTrk *theHot) |
virtual Hep3Vector | direction (double fltL) const |
virtual Hep3Vector | direction (double fltL) const |
virtual BesVectorErr | directionErr (double fltL) const |
virtual BesVectorErr | directionErr (double fltL) const |
virtual double | endFoundRange () const |
virtual double | endFoundRange () const |
history_iterator | endHistory () const |
history_iterator | endHistory () const |
double | endValidRange () const |
double | endValidRange () const |
virtual TrkErrCode | fit () |
virtual TrkErrCode | fit () |
bool | fitCurrent () const |
bool | fitCurrent () const |
const TrkErrCode & | fitStatus () const |
const TrkErrCode & | fitStatus () const |
TrkHelixFitter & | fitter () |
TrkHelixFitter & | fitter () |
bool | fitValid () const |
bool | fitValid () const |
virtual void | getAllCovs (double fltL, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov) const |
virtual void | getAllCovs (double fltL, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov) const |
virtual void | getAllWeights (const HepPoint3D &pt, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
virtual void | getAllWeights (double fltL, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
virtual void | getAllWeights (const HepPoint3D &pt, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
virtual void | getAllWeights (double fltL, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
virtual TrkExchangePar | helix (double fltLen) const |
virtual TrkExchangePar | helix (double fltLen) const |
std::pair< history_iterator, history_iterator > | history () const |
std::pair< history_iterator, history_iterator > | history () const |
const std::vector< TrkHistory > & | historyVector () const |
const std::vector< TrkHistory > & | historyVector () const |
bool | hitCapable () const |
bool | hitCapable () const |
virtual const TrkHotList * | hotList () const |
virtual TrkHotList * | hotList () |
virtual const TrkHotList * | hotList () const |
virtual TrkHotList * | hotList () |
bool | is2d () const |
bool | is2d () const |
virtual Hep3Vector | momentum (double fltL=0.) const |
virtual Hep3Vector | momentum (double fltL=0.) const |
virtual BesVectorErr | momentumErr (double fltL) const |
virtual BesVectorErr | momentumErr (double fltL) const |
bool | multScat () const |
bool | multScat () const |
const IfdKey & | myKey () const |
const IfdKey & | myKey () const |
virtual int | nActive () const |
virtual int | nActive () const |
int | nDof () const |
int | nDof () const |
virtual int | nMdc () const |
virtual int | nMdc () const |
virtual int | nSvt () const |
virtual int | nSvt () const |
bool | operator== (const TrkRep &) |
bool | operator== (const TrkRep &) |
const TrkRecoTrk * | parentTrack () const |
TrkRecoTrk * | parentTrack () |
const TrkRecoTrk * | parentTrack () const |
TrkRecoTrk * | parentTrack () |
virtual PdtPid::PidType | particleType () const |
virtual PdtPid::PidType | particleType () const |
virtual HepPoint3D | position (double fltL) const |
virtual HepPoint3D | position (double fltL) const |
virtual BesPointErr | positionErr (double fltL) const |
virtual BesPointErr | positionErr (double fltL) const |
virtual HepMatrix | posmomCov (double fltL) const |
virtual HepMatrix | posmomCov (double fltL) const |
virtual void | print (std::ostream &ostr) const |
virtual void | print (std::ostream &ostr) const |
virtual void | printAll (std::ostream &ostr) const |
virtual void | printAll (std::ostream &ostr) const |
std::ostream & | printHistory (std::ostream &os=std::cout) const |
std::ostream & | printHistory (std::ostream &os=std::cout) const |
std::ostream & | printStatus (std::ostream &os=std::cout) const |
std::ostream & | printStatus (std::ostream &os=std::cout) const |
void | printType (std::ostream &ostr) const |
void | printType (std::ostream &ostr) const |
virtual double | pt (double fltL=0.) const |
virtual double | pt (double fltL=0.) const |
virtual void | removeHot (TrkHitOnTrk *theHot) |
virtual void | removeHot (TrkHitOnTrk *theHot) |
virtual bool | resid (const TrkHitOnTrk *h, double &residual, double &residErr, bool exclude) const |
virtual bool | resid (const TrkHitOnTrk *h, double &residual, double &residErr, bool exclude) const |
history_riterator | reverseBeginHistory () const |
history_riterator | reverseBeginHistory () const |
history_riterator | reverseEndHistory () const |
history_riterator | reverseEndHistory () const |
void | set2d (bool d) |
void | set2d (bool d) |
void | setChisq (double c) |
void | setChisq (double c) |
void | setCurrent (bool c) |
void | setCurrent (bool c) |
void | setMultScat (bool m) |
void | setMultScat (bool m) |
void | setValid (bool v) |
void | setValid (bool v) |
virtual const TrkSimpTraj & | simpTraj () const |
virtual TrkSimpTraj & | simpTraj () |
virtual const TrkSimpTraj & | simpTraj () const |
virtual TrkSimpTraj & | simpTraj () |
virtual double | startFoundRange () const |
virtual double | startFoundRange () const |
double | startValidRange () const |
double | startValidRange () const |
double | trackT0 () const |
double | trackT0 () const |
virtual const TrkDifTraj & | traj () const |
virtual TrkDifTraj & | traj () |
virtual const TrkDifTraj & | traj () const |
virtual TrkDifTraj & | traj () |
TrkHelixRep (const TrkExchangePar &inPar, TrkRecoTrk *trk, PdtPid::PidType hypo, int nact, int nsv, int ndc, double chi2, double startFoundRange, double endFoundRange) | |
TrkHelixRep (const TrkExchangePar &inPar, TrkRecoTrk *myTrack, PdtPid::PidType hypo, const TrkHotList *=0) | |
TrkHelixRep (const TrkExchangePar &inPar, TrkRecoTrk *trk, PdtPid::PidType hypo, int nact, int nsv, int ndc, double chi2, double startFoundRange, double endFoundRange) | |
TrkHelixRep (const TrkExchangePar &inPar, TrkRecoTrk *myTrack, PdtPid::PidType hypo, const TrkHotList *=0) | |
virtual void | updateHots () |
virtual void | updateHots () |
virtual bool | validFlightLength (double fltL, double tolerance=0.0) const |
virtual bool | validFlightLength (double fltL, double tolerance=0.0) const |
virtual | ~TrkHelixRep () |
virtual | ~TrkHelixRep () |
Protected Member Functions | |
TrkBase::Functors::setActive | setActive (bool active) const |
TrkBase::Functors::setActive | setActive (bool active) const |
void | setActivity (TrkHitOnTrk &hot, bool active) const |
void | setActivity (TrkHitOnTrk &hot, bool active) const |
TrkBase::Functors::setParent | setParent (TrkRep *parent) const |
void | setParent (TrkHitOnTrk &hot, TrkRep *parent) const |
TrkBase::Functors::setParent | setParent (TrkRep *parent) const |
void | setParent (TrkHitOnTrk &hot, TrkRep *parent) const |
const TrkContext & | trkContext () const |
const TrkContext & | trkContext () const |
TrkHelixRep (const TrkHelixRep &right, TrkRecoTrk *trk, PdtPid::PidType) | |
TrkHelixRep (const TrkHelixRep &right, TrkRecoTrk *trk, PdtPid::PidType) | |
TrkBase::Functors::updateMeasurement | updateMeasurement (const TrkDifTraj *traj=0, bool maintainAmbiguity=false) const |
TrkErrCode | updateMeasurement (TrkHitOnTrk &hot, const TrkDifTraj *traj=0, bool maintainAmbiguity=false) const |
TrkBase::Functors::updateMeasurement | updateMeasurement (const TrkDifTraj *traj=0, bool maintainAmbiguity=false) const |
TrkErrCode | updateMeasurement (TrkHitOnTrk &hot, const TrkDifTraj *traj=0, bool maintainAmbiguity=false) const |
Protected Attributes | |
std::auto_ptr< TrkHotList > | _hotList |
std::auto_ptr< TrkHotList > | _hotList |
Private Member Functions | |
TrkHelixRep & | operator= (const TrkHelixRep &right) |
TrkHelixRep & | operator= (const TrkHelixRep &right) |
Private Attributes | |
HelixTraj | _traj |
|
|
|
|
|
00024 : 00025 TrkSimpleRep(hots, trk, hypo), 00026 _traj(inPar) 00027 {}
|
|
00033 : 00034 TrkSimpleRep(trk, hypo, nact, nsv, ndc, chi2, stFndRng, endFndRng), 00035 _traj(inPar.params(), inPar.covariance()) 00036 {}
|
|
00044 {}
|
|
00039 : 00040 TrkSimpleRep(old, trk, hypo), _traj(old._traj) 00041 {}
|
|
|
|
|
|
|
|
|
|
|
|
00155 { 00156 if(!hot->isActive()){ 00157 // make sure this is my hot we're talking about 00158 if(this == hot->getParentRep()){ 00159 setCurrent(false); 00160 // actually activate the hot; this is now the rep's job 00161 hot->setActive(true); 00162 } 00163 } 00164 }
|
|
00059 { addHistory(p.first,p.second); }
|
|
00057 { _history.insert(_history.end(),begin,end); }
|
|
|
|
00059 { addHistory(p.first,p.second); }
|
|
00057 { _history.insert(_history.end(),begin,end); }
|
|
00078 { 00079 // append the module name to the error code message 00080 _history.push_back(TrkHistory(status,modulename)); 00081 }
|
|
|
|
00141 { 00142 if (newHot->isActive()) setCurrent(false); 00143 hotList()->append(newHot); 00144 }
|
|
Implements TrkFit. Reimplemented in TrkLineRep, and TrkLineRep. |
|
Implements TrkFit. Reimplemented in TrkLineRep, and TrkLineRep. 00193 { 00194 static double cinv = 1./Constants::c; 00195 // Initialize cache 00196 if (_betainv < 0.0) { 00197 double mass2 = Pdt::lookup(particleType())->mass(); 00198 mass2 = mass2 * mass2; 00199 double ptot2 = momentum(0.).mag2(); 00200 assert(ptot2 != 0.0); 00201 _betainv = sqrt( (ptot2 + mass2)/ ptot2); 00202 } 00203 double tof = fltL * _betainv * cinv; 00204 return trackT0() + tof; 00205 }
|
|
00046 { return _history.begin(); }
|
|
00046 { return _history.begin(); }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00118 { 00119 const BField& theField = parentTrack()->bField(); 00120 return TrkMomCalculator::charge(simpTraj(), theField, 0.); 00121 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00087 { 00088 // Note possible inefficiency in calling virtual simpTraj(); implementation 00089 // could be moved to derived classes instead. 00090 return _chisq; 00091 // return simpTraj().parameters()->chisquared(); 00092 }
|
|
Implements TrkFit. |
|
Implements TrkFit. 00363 { 00364 if(fitValid()) 00365 return ChisqConsistency(chisq(),nDof()); 00366 else 00367 return ChisqConsistency(); 00368 }
|
|
Implements TrkRep. |
|
Implements TrkRep. 00048 { 00049 TrkHelixRep* newRep = new TrkHelixRep(*this, theTrack, this->particleType()); 00050 newRep->setCurrent(fitCurrent()); 00051 return newRep; 00052 }
|
|
Implements TrkRep. |
|
Implements TrkRep. 00056 { 00057 TrkHelixRep* newRep = new TrkHelixRep(*this, parentTrack(), hypo); 00058 newRep->setValid(fitValid()); 00059 newRep->setCurrent(fitCurrent()); // true for helices, anyway 00060 return newRep; 00061 }
|
|
|
|
00168 { 00169 if(hot->isActive()){ 00170 // make sure this is my hot we're talking about 00171 if(this == hot->getParentRep()){ 00172 setCurrent(false); 00173 // actually deactivate the hot; this is now the rep's job 00174 hot->setActive(false); 00175 } 00176 } 00177 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit.
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00273 { 00274 static DifPoint posD; 00275 static DifVector dirD; 00276 traj().getDFInfo2(fltL, posD, dirD); 00277 BesError symErr(3); 00278 symErr.assign( dirD.errorMatrix( dirD.x.indepPar()->covariance() )); 00279 Hep3Vector dir(dirD.x.number(), dirD.y.number(), dirD.z.number()); 00280 return BesVectorErr(dir, symErr); 00281 }
|
|
Implements TrkFit. |
|
Implements TrkFit. 00303 { 00304 return hotList()->endFoundRange(); 00305 }
|
|
00047 { return _history.end(); }
|
|
00047 { return _history.end(); }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit.
|
|
Implements TrkRep. |
|
Implements TrkRep. 00061 { 00062 if (!hitCapable()) { 00063 setValid(false); 00064 return TrkErrCode(TrkErrCode::fail,100, 00065 "Tried to fit without a list of hits."); 00066 } 00067 TrkErrCode error = _fitter.fit(*hotList(), simpTraj()); 00068 if (error.failure()) { 00069 setValid(false); 00070 } 00071 else { 00072 setValid(true); 00073 setCurrent(true); 00074 } 00075 setChisq(_fitter.lastChisq()); 00076 return error; 00077 }
|
|
00033 {return _fitCurrent;}
|
|
00033 {return _fitCurrent;}
|
|
00043 { return _history.back().status(); }
|
|
00043 { return _history.back().status(); }
|
|
00096 {return _fitter;}
|
|
00096 {return _fitter;}
|
|
00034 {return _fitValid;}
|
|
00034 {return _fitValid;}
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00148 { 00149 const BField& theField = parentTrack()->bField(); 00150 TrkMomCalculator::getAllCovs(simpTraj(), theField, fltL, 00151 xxCov,ppCov,xpCov); 00152 }
|
|
|
|
Implements TrkAbsFit. |
|
00172 { 00173 double fltL=0; 00174 TrkPoca poca(traj(),fltL, pt); 00175 fltL = poca.flt1(); 00176 getAllWeights(fltL,pos,mom,xxWeight,ppWeight,xpWeight); 00177 }
|
|
Implements TrkAbsFit. 00160 { 00161 const BField& theField = parentTrack()->bField(); 00162 TrkMomCalculator::getAllWeights(simpTraj(), theField, fltL, 00163 pos,mom,xxWeight,ppWeight,xpWeight); 00164 }
|
|
Implements TrkFit. |
|
Implements TrkFit. 00065 { 00066 HepVector outPar = _traj.parameters()->parameter(); 00067 outPar[HelixTraj::phi0Index] = BesAngle(outPar[HelixTraj::phi0Index]).rad(); 00068 return TrkExchangePar(outPar, _traj.parameters()->covariance()); 00069 }
|
|
00050 { 00051 return std::pair<history_iterator,history_iterator>(beginHistory(),endHistory()); 00052 }
|
|
00050 { 00051 return std::pair<history_iterator,history_iterator>(beginHistory(),endHistory()); 00052 }
|
|
00053 { return _history; }
|
|
00053 { return _history; }
|
|
00118 {return hotList()->hitCapable();}
|
|
00118 {return hotList()->hitCapable();}
|
|
00110 {return _hotList.get();}
|
|
00109 {return _hotList.get();}
|
|
00110 {return _hotList.get();}
|
|
00109 {return _hotList.get();}
|
|
00032 {return _is2d;}
|
|
00032 {return _is2d;}
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00104 { 00105 const BField& theField = parentTrack()->bField(); 00106 return TrkMomCalculator::vecMom(simpTraj(), theField, fltL); 00107 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00125 { 00126 const BField& theField = parentTrack()->bField(); 00127 return TrkMomCalculator::errMom(simpTraj(), theField, fltL); 00128 }
|
|
00035 {return _multScat;}
|
|
00035 {return _multScat;}
|
|
Reimplemented from TrkRep. |
|
Reimplemented from TrkRep. 00115 { 00116 static IfdIntKey _theKey(3133); 00117 return _theKey; 00118 }
|
|
Implements TrkFit. |
|
Implements TrkFit.
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00081 { 00082 return nActive() - simpTraj().parameters()->nPar(); 00083 }
|
|
Implements TrkFit. |
|
Implements TrkFit.
|
|
Implements TrkFit. |
|
Implements TrkFit.
|
|
|
|
|
|
|
|
00135 { 00136 return (&rhs == this); 00137 }
|
|
00083 {return _parentTrack;}
|
|
00082 {return _parentTrack;}
|
|
00083 {return _parentTrack;}
|
|
00082 {return _parentTrack;}
|
|
Implements TrkFit. |
|
Implements TrkFit. 00309 {
00310 return _partHypo;
00311 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit.
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00215 { 00216 static DifPoint posD; 00217 static DifVector dirD; 00218 traj().getDFInfo2(fltL, posD, dirD); 00219 HepMatrix err = posD.errorMatrix( posD.x.indepPar()->covariance() ); 00220 HepPoint3D point(posD.x.number(), posD.y.number(), posD.z.number()); 00221 BesError symErr(3); 00222 symErr.assign(err); 00223 00224 if (false) { 00225 #ifdef MDCPATREC_ROUTINE 00226 cout<< "ErrMsg(routine) " << "Pos " 00227 << err.num_row() << " " << err.num_col() << endl 00228 << "output:" << endl 00229 // << err(1,1) << endl 00230 // << err(2,1) << " " << err(2,2) << endl 00231 // << err(3,1) << " " << err(3,2) << " " << err(3,3) << endl 00232 << "x deriv: " << endl 00233 << posD.x.derivatives() << endl 00234 << "y deriv: " << endl 00235 << posD.y.derivatives() << endl 00236 << endl; 00237 #endif 00238 // } 00239 00240 Hep3Vector pointDir(point.x(), point.y()); 00241 double dirMag = pointDir.mag(); 00242 double dist = 5.e-3; 00243 double delx = dist * point.x() / dirMag; 00244 double dely = dist * point.y() / dirMag; 00245 int ierr = 0; 00246 HepMatrix weight = err.inverse(ierr); 00247 double chisq = weight(1,1) * delx * delx + 00248 2 * weight(2,1) * delx * dely + 00249 weight(2,2) * dely * dely; 00250 #ifdef MDCPATREC_DEBUG 00251 cout << point << endl; 00252 cout << symErr << endl; 00253 cout << "delta: " << delx << " " << dely << endl; 00254 cout << "chisq: " << chisq << endl; 00255 #endif 00256 double phi0 = helix(fltL).phi0(); 00257 delx = dist * cos(phi0); 00258 dely = dist * sin(phi0); 00259 chisq = weight(1,1) * delx * delx + 00260 2 * weight(2,1) * delx * dely + 00261 weight(2,2) * dely * dely; 00262 #ifdef MDCPATREC_DEBUG 00263 cout << "delta: " << delx << " " << dely << endl; 00264 cout << "chisq: " << chisq << endl; 00265 cout << endl << endl; 00266 #endif 00267 } 00268 return BesPointErr(point, symErr); 00269 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00138 { 00139 const BField& theField = parentTrack()->bField(); 00140 return TrkMomCalculator::posmomCov(simpTraj(), theField, fltL); 00141 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00073 { 00074 ostr << "TrkHelixRep " 00075 << "parent track: "<<parentTrack()->id() 00076 << " phi0: " << BesAngle(_traj.phi0()).rad() 00077 << " om: "<<_traj.omega() 00078 << " d0: " << _traj.d0() << " z0: " << _traj.z0() 00079 << " ct: " << _traj.tanDip() << endl; 00080 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00084 { 00085 print(ostr); 00086 }
|
|
|
|
00085 { 00086 //FIXME: this doesn't work because ostream isn't a std::ostream, so 00087 // std::ostream_iterator doesn't like this... 00088 // std::copy(_history.begin(),_history.end(),std::ostream_iterator<TrkHistory>(os,"\n")); 00089 for(history_iterator i=_history.begin();i!=_history.end();++i) 00090 os << *i << endl; 00091 return os; 00092 }
|
|
|
|
00070 { 00071 os << " 3-d: " << (is2d() == 0) << " "; 00072 return printHistory(os); 00073 }
|
|
|
|
00032 { 00033 ostr << "Particle type: " << Pdt::lookup( particleType() )->name(); 00034 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00111 { 00112 const BField& theField = parentTrack()->bField(); 00113 return TrkMomCalculator::ptMom(simpTraj(), theField, fltL); 00114 }
|
|
|
|
00148 { 00149 if(theHot->isActive()) setCurrent(false); // fit no longer current 00150 hotList()->remove(theHot); 00151 }
|
|
Reimplemented from TrkRep. |
|
Reimplemented from TrkRep. 00124 { 00125 if (this != h->getParentRep() ) return false; 00126 static HepVector derivs; double deltaChi; 00127 TrkErrCode errCode = h->getFitStuff( derivs, deltaChi ); 00128 // TODO: add caching of derivatives here... 00129 if (errCode.failure()) return false; 00130 if (!exclude || !h->isActive()) { 00131 HepSymMatrix c = _traj.parameters()->covariance().similarityT(derivs); 00132 double tErr2 = c(1,1); 00133 double rms = h->hitRms(); 00134 residual=h->residual(); 00135 double e2=rms*rms+(h->isActive()?-1:1)*tErr2; 00136 if (e2<0) return false; 00137 residErr=sqrt(e2); 00138 } else { 00139 assert(h->isActive()); 00140 // FIXME: never really checked this is really OK... 00141 // FIXME: should compare to HelixRefiner... 00142 HepSymMatrix w=_traj.parameters()->covariance(); 00143 int ier; 00144 w.invert(ier); 00145 if (ier!=0) return false; 00146 HepVector p0 = _traj.parameters()->parameter(); 00147 HepVector p1 = w*p0; 00148 p1 -= deltaChi*derivs; 00149 for (unsigned i=0; i<p0.num_row(); ++i) for (unsigned j=0; j<i+1 ;++j) { 00150 w.fast(i+1,j+1) -= derivs[i]*derivs[j]; 00151 } 00152 w.invert(ier); 00153 if (ier!=0) return false; 00154 residual=h->residual()+h->hitRms()*dot(derivs,w*p1-p0); 00155 residErr=h->hitRms()*sqrt(w(1,1)+1); 00156 } 00157 return true; 00158 }
|
|
00048 { return _history.rbegin(); }
|
|
00048 { return _history.rbegin(); }
|
|
00049 { return _history.rend(); }
|
|
00049 { return _history.rend(); }
|
|
00040 { _is2d = d; };
|
|
00040 { _is2d = d; };
|
|
00056 { return TrkBase::Functors::setActive(active); }
|
|
00056 { return TrkBase::Functors::setActive(active); }
|
|
00044 { 00045 hot.setActive(active); }
|
|
00044 { 00045 hot.setActive(active); }
|
|
|
|
00096 { 00097 // See inefficiency comment above. 00098 // simpTraj().parameters()->setChisquared(c); 00099 _chisq = c; 00100 }
|
|
00039 { _fitCurrent = c; }
|
|
00039 { _fitCurrent = c; }
|
|
00041 { _multScat = m; };
|
|
00041 { _multScat = m; };
|
|
00054 { return TrkBase::Functors::setParent(parent); }
|
|
00047 { 00048 hot._parentRep = parent; 00049 }
|
|
00054 { return TrkBase::Functors::setParent(parent); }
|
|
00047 { 00048 hot._parentRep = parent; 00049 }
|
|
|
|
00058 { 00059 _fitValid = v; 00060 if (!v) setCurrent(false); 00061 }
|
|
Implements TrkSimpleRep. |
|
Implements TrkSimpleRep. |
|
Implements TrkSimpleRep. 00096 {
00097 return _traj;
00098 }
|
|
Implements TrkSimpleRep. 00090 {
00091 return _traj;
00092 }
|
|
Implements TrkFit. |
|
Implements TrkFit. 00297 { 00298 return hotList()->startFoundRange(); 00299 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit.
|
|
|
|
00209 { 00210 return parentTrack()->trackT0(); 00211 }
|
|
Implements TrkAbsFit. |
|
|
|
Implements TrkAbsFit. 00108 {
00109 return _traj;
00110 }
|
|
00102 {
00103 return _traj;
00104 }
|
|
|
|
|
|
|
|
00324 { 00325 setCurrent(false); 00326 hotList()->updateHots(); 00327 }
|
|
00052 { return TrkBase::Functors::updateMeasurement(traj,maintainAmbiguity); }
|
|
00042 { return hot.updateMeasurement(traj,maintainAmbiguity);}
|
|
00052 { return TrkBase::Functors::updateMeasurement(traj,maintainAmbiguity); }
|
|
00042 { return hot.updateMeasurement(traj,maintainAmbiguity);}
|
|
|
|
00038 { 00039 return fltl+tolerance >= startValidRange() && 00040 fltl-tolerance <= endValidRange(); 00041 }
|
|
|
|
|
|
|