#include <TrkSimpTraj.h>
Inheritance diagram for TrkSimpTraj:
Public Member Functions | |
TrkSimpTraj (const HepVector ¶ms, const HepSymMatrix &cov, const double startRange=-99999., const double endRange=99999., const HepPoint3D &refpoint=_theOrigin) | |
TrkSimpTraj (const TrkParams ¶ms, const double startRange=-99999., const double endRange=99999., const HepPoint3D &refpoint=_theOrigin) | |
virtual | ~TrkSimpTraj () |
virtual TrkSimpTraj * | clone () const =0 |
TrkParams * | parameters () |
const TrkParams * | parameters () const |
virtual const TrkSimpTraj * | localTrajectory (double fltLen, double &localFlt) const |
const HepPoint3D & | referencePoint () const |
virtual void | print (std::ostream &os) const |
virtual void | printAll (std::ostream &os) const |
virtual int | nPar () const |
void | changePoint (const HepPoint3D &newpoint, double &fltlen) |
void | setPoint (const HepPoint3D &newpoint) |
TrkSimpTraj & | invert () |
virtual void | invertParams (TrkParams *newparams, std::vector< bool > &flags) const =0 |
virtual TranslateParams | paramFunction () const =0 |
virtual void | visitAccept (TrkVisitor *vis) const =0 |
bool | operator== (const TrkSimpTraj &) const |
virtual void | getDFInfo (double fltLen, DifPoint &pos, DifVector &direction, DifVector &delDirect) const =0 |
virtual void | getDFInfo2 (double fltLen, DifPoint &pos, DifVector &direction) const |
virtual HepPoint3D | position (double) const =0 |
virtual Hep3Vector | direction (double) const =0 |
virtual Hep3Vector | delDirect (double) const =0 |
virtual double | curvature (double) const =0 |
virtual void | getInfo (double fltLen, HepPoint3D &pos, Hep3Vector &direction) const =0 |
virtual void | getInfo (double fltLen, HepPoint3D &pos, Hep3Vector &direction, Hep3Vector &delDirect) const =0 |
double | distTo0thError (double s, double tol, int pathDir) const |
virtual double | distTo1stError (double s, double tol, int pathDir) const =0 |
virtual double | distTo2ndError (double s, double tol, int pathDir) const =0 |
bool | validFlightDistance (double f, double tolerance=0.0) const |
virtual void | setFlightRange (double newrange[2]) |
double | lowRange () const |
double | hiRange () const |
double | range () const |
virtual HepMatrix | derivDeflect (double fltlen, deflectDirection idir) const =0 |
virtual HepMatrix | derivDisplace (double fltlen, deflectDirection idir) const =0 |
virtual HepMatrix | derivPFract (double fltlen) const =0 |
Static Public Attributes | |
static HepPoint3D | _theOrigin |
Protected Attributes | |
TrkParams | _dtparams |
HepPoint3D | _refpoint |
double | flightrange [2] |
Private Member Functions | |
TrkSimpTraj (const TrkSimpTraj &) | |
TrkSimpTraj & | operator= (const TrkSimpTraj &) |
Definition at line 55 of file TrkSimpTraj.h.
TrkSimpTraj::TrkSimpTraj | ( | const HepVector & | params, | |
const HepSymMatrix & | cov, | |||
const double | startRange = -99999. , |
|||
const double | endRange = 99999. , |
|||
const HepPoint3D & | refpoint = _theOrigin | |||
) |
Definition at line 30 of file TrkSimpTraj.cxx.
00032 : 00033 //---------------------------------------------------------------------------- 00034 TrkDifTraj(lowlim, hilim),_dtparams(params, cov),_refpoint(refpoint) 00035 {;}
TrkSimpTraj::TrkSimpTraj | ( | const TrkParams & | params, | |
const double | startRange = -99999. , |
|||
const double | endRange = 99999. , |
|||
const HepPoint3D & | refpoint = _theOrigin | |||
) |
Definition at line 37 of file TrkSimpTraj.cxx.
00039 : 00040 //---------------------------------------------------------------------------- 00041 TrkDifTraj(lowlim, hilim),_dtparams(params),_refpoint(refpoint) 00042 {;}
TrkSimpTraj::~TrkSimpTraj | ( | ) | [virtual] |
TrkSimpTraj::TrkSimpTraj | ( | const TrkSimpTraj & | ) | [private] |
Definition at line 45 of file TrkSimpTraj.cxx.
00045 : 00046 //---------------------------------------------------------------------------- 00047 TrkDifTraj(other.lowRange(),other.hiRange()), 00048 _dtparams(other._dtparams), 00049 _refpoint(other._refpoint) 00050 {}
void TrkSimpTraj::changePoint | ( | const HepPoint3D & | newpoint, | |
double & | fltlen | |||
) |
Definition at line 70 of file TrkSimpTraj.cxx.
References _dtparams, _refpoint, TrkParams::covariance(), TrkErrCode::failure(), TrkPocaBase::flt1(), Trajectory::hiRange(), icol, Trajectory::lowRange(), DifIndepPar::parameter(), parameters(), paramFunction(), Trajectory::setFlightRange(), and TrkPocaBase::status().
00070 { 00071 //---------------------------------------------------------------------------- 00072 if(newpoint != _refpoint){ 00073 // find POCA to the new point 00074 TrkPocaXY endpoca(*this,fltlen,newpoint); 00075 if(endpoca.status().failure()){ 00076 std::cout<<"ErrMsg(error)" << "poca failure changing reference point" << std::endl; 00077 return; 00078 } else { 00079 // update flight length 00080 fltlen = endpoca.flt1(); 00081 // make a symmatrix from the covariance: temporary kludge 00082 int nrow = parameters()->covariance().num_row(); 00083 HepSymMatrix cov(nrow); 00084 for(int irow=0;irow<nrow;irow++) 00085 for(int icol=0;icol<=irow;icol++) 00086 cov.fast(irow+1,icol+1) = parameters()->covariance().fast(irow+1,icol+1); 00087 // Get the translation function 00088 TranslateParams pfunc = paramFunction(); 00089 // Use it on the SimpTraj parameters 00090 pfunc(_refpoint,newpoint, 00091 parameters()->parameter(),cov, 00092 _dtparams.parameter(),cov, 00093 fltlen); 00094 // put back the covariance 00095 _dtparams.covariance() = cov; 00096 _refpoint = newpoint; 00097 // update the flight range to correspond to the same range in space as before 00098 double newrange[2]; 00099 newrange[0] = lowRange() - fltlen; 00100 newrange[1] = hiRange() - fltlen; 00101 setFlightRange(newrange); 00102 } 00103 } 00104 return; 00105 }
virtual TrkSimpTraj* TrkSimpTraj::clone | ( | ) | const [pure virtual] |
Implements Trajectory.
Implemented in HelixTraj, NeutTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::append(), TrkDifPieceTraj::prepend(), and TrkDifPieceTraj::TrkDifPieceTraj().
virtual double Trajectory::curvature | ( | double | ) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::curvature(), TrkMomCalculator::ptMom(), TrkPocaXY::TrkPocaXY(), and TrkMomCalculator::vecMom().
virtual Hep3Vector Trajectory::delDirect | ( | double | ) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::delDirect(), and TrkPocaXY::TrkPocaXY().
virtual HepMatrix TrkKalDeriv::derivDeflect | ( | double | fltlen, | |
deflectDirection | idir | |||
) | const [pure virtual, inherited] |
Implemented in HelixTraj, NeutTraj, TrkDifPieceTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::derivDeflect().
virtual HepMatrix TrkKalDeriv::derivDisplace | ( | double | fltlen, | |
deflectDirection | idir | |||
) | const [pure virtual, inherited] |
Implemented in HelixTraj, NeutTraj, TrkDifPieceTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::derivDisplace().
virtual HepMatrix TrkKalDeriv::derivPFract | ( | double | fltlen | ) | const [pure virtual, inherited] |
Implemented in HelixTraj, NeutTraj, TrkDifPieceTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::derivPFract().
virtual Hep3Vector Trajectory::direction | ( | double | ) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by MdcHitOnTrack::dipAngle(), TrkRep::direction(), TrkDifPieceTraj::direction(), TrkCompTrk::direction(), TrkDifTraj::getDFInfo2(), TrkBmSpotOnTrk::GetRms(), TrkMomCalculator::ptMom(), TrkPocaXY::TrkPocaXY(), and TrkMomCalculator::vecMom().
double Trajectory::distTo0thError | ( | double | s, | |
double | tol, | |||
int | pathDir | |||
) | const [inherited] |
virtual double Trajectory::distTo1stError | ( | double | s, | |
double | tol, | |||
int | pathDir | |||
) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::distTo1stError(), and TrkPocaBase::minimize().
virtual double Trajectory::distTo2ndError | ( | double | s, | |
double | tol, | |||
int | pathDir | |||
) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::distTo2ndError(), TrkPocaBase::stepToPointPoca(), and TrkPocaBase::stepTowardPoca().
virtual void TrkDifTraj::getDFInfo | ( | double | fltLen, | |
DifPoint & | pos, | |||
DifVector & | direction, | |||
DifVector & | delDirect | |||
) | const [pure virtual, inherited] |
Implemented in HelixTraj, NeutTraj, TrkDifPieceTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkMomCalculator::calcCurvAllCovsOLD(), TrkMomCalculator::calcCurvAllWeightsOLD(), TrkMomCalculator::calcCurvErrMom(), TrkMomCalculator::calcCurvPosmomCov(), TrkMomCalculator::calcNeutAllCovs(), TrkMomCalculator::calcNeutAllWeights(), TrkMomCalculator::calcNeutErrMom(), TrkMomCalculator::calcNeutPosmomCov(), TrkDifPieceTraj::getDFInfo(), and TrkDifTraj::getDFInfo2().
void TrkDifTraj::getDFInfo2 | ( | double | fltLen, | |
DifPoint & | pos, | |||
DifVector & | direction | |||
) | const [virtual, inherited] |
Reimplemented in HelixTraj, TrkDifPieceTraj, and TrkCircleTraj.
Definition at line 25 of file TrkDifTraj.cxx.
References Trajectory::direction(), TrkDifTraj::getDFInfo(), and boss::pos.
Referenced by TrkDifPoca::calcDist(), TrkRep::directionErr(), TrkCompTrk::directionErr(), TrkDifPieceTraj::getDFInfo2(), TrkRep::positionErr(), and TrkCompTrk::positionErr().
00025 { 00026 // Slow default implementation. Override in subclasses where speed matters 00027 DifVector dummy; 00028 getDFInfo(fltLen, pos, direction, dummy); 00029 }
virtual void Trajectory::getInfo | ( | double | fltLen, | |
HepPoint3D & | pos, | |||
Hep3Vector & | direction, | |||
Hep3Vector & | delDirect | |||
) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
virtual void Trajectory::getInfo | ( | double | fltLen, | |
HepPoint3D & | pos, | |||
Hep3Vector & | direction | |||
) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkPoca::calcDist(), TrkDifPoca::calcDist(), MdcHitOnTrack::driftVelocity(), MdcHitOnTrack::entranceAngle(), MdcHitOnTrack::entranceAngleHit(), TrkDifPieceTraj::getInfo(), TrkPocaBase::stepToPointPoca(), TrkPocaBase::stepTowardPoca(), MdcHitOnTrack::updateCorrections(), and MdcHitOnTrack::wireAmbig().
double Trajectory::hiRange | ( | ) | const [inline, inherited] |
Definition at line 92 of file Trajectory.h.
References Trajectory::flightrange.
Referenced by TrkDifPieceTraj::append(), changePoint(), MdcUtilitySvc::docaPatPar(), TrkRep::endValidRange(), TrkCompTrk::endValidRange(), invert(), TrkDifPieceTraj::invert(), TrkDifPieceTraj::locallyValid(), MdcHitOnTrack::MdcHitOnTrack(), operator==(), TrkDifPieceTraj::prepend(), and Trajectory::range().
00092 {return flightrange[1];}
TrkSimpTraj & TrkSimpTraj::invert | ( | ) |
Reimplemented in NeutTraj.
Definition at line 128 of file TrkSimpTraj.cxx.
References TrkParams::covariance(), Trajectory::hiRange(), invertParams(), Trajectory::lowRange(), DifIndepPar::nPar(), nPar(), parameters(), Trajectory::range(), and Trajectory::setFlightRange().
00129 { 00130 // Invert parameters 00131 std::vector<bool> flags(parameters()->nPar(),false); 00132 invertParams(parameters(), flags); 00133 // loop over parameters and invert covariance matrix 00134 for(int iparam=0;iparam<parameters()->nPar();iparam++){ 00135 bool iinvert = flags[iparam]; 00136 // do covariance cross-terms too 00137 for(int jparam=iparam+1;jparam<parameters()->nPar();jparam++){ 00138 bool jinvert = flags[jparam]; 00139 if( (iinvert && !jinvert) || (!iinvert && jinvert) ) { 00140 // cross-terms change sign 00141 parameters()->covariance()[iparam][jparam] *= -1.0; 00142 } 00143 } 00144 } 00145 // invert the flightlength 00146 double range[2]; 00147 range[0] = -hiRange(); 00148 range[1] = -lowRange(); 00149 setFlightRange(range); 00150 // done 00151 return *this; 00152 }
const TrkSimpTraj * TrkSimpTraj::localTrajectory | ( | double | fltLen, | |
double & | localFlt | |||
) | const [virtual] |
Implements TrkDifTraj.
Definition at line 59 of file TrkSimpTraj.cxx.
00059 { 00060 //---------------------------------------------------------------------------- 00061 localFlt = fltLen; 00062 return this; 00063 }
double Trajectory::lowRange | ( | ) | const [inline, inherited] |
Definition at line 91 of file Trajectory.h.
References Trajectory::flightrange.
Referenced by TrkDifPieceTraj::append(), changePoint(), MdcUtilitySvc::docaPatPar(), invert(), TrkDifPieceTraj::invert(), TrkDifPieceTraj::locallyValid(), MdcHitOnTrack::MdcHitOnTrack(), operator==(), TrkDifPieceTraj::prepend(), Trajectory::range(), TrkRep::startValidRange(), TrkCompTrk::startValidRange(), TrkDifPieceTraj::trajIndex(), and TrkDifPieceTraj::TrkDifPieceTraj().
00091 {return flightrange[0];}
virtual int TrkSimpTraj::nPar | ( | ) | const [inline, virtual] |
Reimplemented in HelixTraj, NeutTraj, TrkCircleTraj, and TrkDifLineTraj.
Definition at line 88 of file TrkSimpTraj.h.
References DifIndepPar::nPar(), and parameters().
Referenced by TrkHelixFitter::fit(), and invert().
00088 {return parameters()->nPar();}
TrkSimpTraj& TrkSimpTraj::operator= | ( | const TrkSimpTraj & | ) | [private] |
bool TrkSimpTraj::operator== | ( | const TrkSimpTraj & | ) | const |
Definition at line 156 of file TrkSimpTraj.cxx.
References _dtparams, _refpoint, Trajectory::hiRange(), genRecEmupikp::i, Trajectory::lowRange(), mp, DifIndepPar::parameter(), and x.
00157 { 00158 if (lowRange()!=x.lowRange() || hiRange()!=x.hiRange()) return false; 00159 const HepVector &m=_dtparams.parameter(); 00160 unsigned int mp=m.num_row(); 00161 const HepVector &n=x._dtparams.parameter(); 00162 unsigned int np=n.num_row(); 00163 if (np!=mp) return false; 00164 for(unsigned i=0;i<np;++i){ 00165 if(m[i] != n[i]) return false; 00166 } 00167 return _refpoint==x._refpoint; 00168 }
const TrkParams* TrkSimpTraj::parameters | ( | ) | const [inline] |
TrkParams* TrkSimpTraj::parameters | ( | ) | [inline] |
Definition at line 80 of file TrkSimpTraj.h.
References _dtparams.
Referenced by TrkMomCalculator::calcCurvAllCovs(), TrkMomCalculator::calcCurvAllWeights(), TrkMomCalculator::calcNeutAllCovs(), TrkMomCalculator::calcNeutAllWeights(), TrkMomCalculator::calcNeutErrMom(), TrkMomCalculator::calcNeutPosmomCov(), changePoint(), TrkMomCalculator::charge(), TrkDifLineTraj::d0(), TrkCircleTraj::d0(), HelixTraj::d0(), TrkHelixFitter::fit(), TrkDifLineTraj::getDFInfo(), TrkCircleTraj::getDFInfo(), NeutTraj::getDFInfo(), HelixTraj::getDFInfo(), TrkCircleTraj::getDFInfo2(), HelixTraj::getDFInfo2(), HelixTraj::getInfo(), TrkLineRep::helix(), TrkHelixRep::helix(), TrkCircleRep::helix(), HelixTraj::HelixTraj(), invert(), TrkSimpleRep::nDof(), nPar(), TrkCircleTraj::omega(), HelixTraj::omega(), TrkDifLineTraj::phi0(), TrkCircleTraj::phi0(), HelixTraj::phi0(), HelixTraj::position(), TrkMomCalculator::ptMom(), TrkHelixRep::resid(), TrkDifLineTraj::tanDip(), HelixTraj::tanDip(), TrkCircleTraj::TrkCircleTraj(), TrkDifLineTraj::TrkDifLineTraj(), TrkHitOnTrk::TrkHitOnTrk(), TrkMomCalculator::vecMom(), TrkDifLineTraj::z0(), and HelixTraj::z0().
00080 {return &_dtparams;}
virtual TranslateParams TrkSimpTraj::paramFunction | ( | ) | const [pure virtual] |
virtual HepPoint3D Trajectory::position | ( | double | ) | const [pure virtual, inherited] |
Implemented in MdcSagTraj, HelixTraj, NeutTraj, TrkDifPieceTraj, TrkLineTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkDifPieceTraj::append(), TrkPocaBase::minimize(), TrkRep::position(), TrkDifPieceTraj::position(), TrkCompTrk::position(), TrkDifPieceTraj::prepend(), TrkPoca::TrkPoca(), and TrkPocaXY::TrkPocaXY().
virtual void TrkSimpTraj::print | ( | std::ostream & | os | ) | const [virtual] |
virtual void TrkSimpTraj::printAll | ( | std::ostream & | os | ) | const [virtual] |
double Trajectory::range | ( | ) | const [inline, inherited] |
Definition at line 93 of file Trajectory.h.
References Trajectory::hiRange(), and Trajectory::lowRange().
Referenced by TrkDifPieceTraj::append(), invert(), TrkDifPieceTraj::invert(), and TrkDifPieceTraj::prepend().
const HepPoint3D& TrkSimpTraj::referencePoint | ( | ) | const [inline] |
Definition at line 84 of file TrkSimpTraj.h.
References _refpoint.
Referenced by TrkDifLineTraj::getDFInfo(), TrkCircleTraj::getDFInfo(), HelixTraj::getDFInfo(), TrkCircleTraj::getDFInfo2(), HelixTraj::getDFInfo2(), TrkCircleTraj::getInfo(), HelixTraj::getInfo(), TrkDifLineTraj::position(), TrkCircleTraj::position(), HelixTraj::position(), TrkDifLineTraj::x(), TrkCircleTraj::x(), TrkDifLineTraj::y(), TrkCircleTraj::y(), TrkDifLineTraj::z(), and HelixTraj::z().
00084 {return _refpoint;}
void Trajectory::setFlightRange | ( | double | newrange[2] | ) | [virtual, inherited] |
Reimplemented in TrkDifPieceTraj.
Definition at line 57 of file Trajectory.cxx.
References Trajectory::flightrange.
Referenced by TrkDifPieceTraj::append(), changePoint(), invert(), TrkDifPieceTraj::invert(), TrkDifPieceTraj::prepend(), and TrkDifPieceTraj::TrkDifPieceTraj().
00058 { 00059 if (newrange[1] >= newrange[0]) { 00060 flightrange[0] = newrange[0]; 00061 flightrange[1] = newrange[1]; 00062 } else { 00063 std::cout<<"ErrMsg(error) "<< "Invalid Trajectory range requested." << std::endl; 00064 flightrange[0] = newrange[1]; 00065 flightrange[1] = newrange[0]; 00066 } 00067 }
void TrkSimpTraj::setPoint | ( | const HepPoint3D & | newpoint | ) | [inline] |
bool Trajectory::validFlightDistance | ( | double | f, | |
double | tolerance = 0.0 | |||
) | const [inline, inherited] |
Definition at line 88 of file Trajectory.h.
References Trajectory::flightrange.
Referenced by TrkDifPieceTraj::trajIndex().
00088 { 00089 return f >= flightrange[0]-tol && f <= flightrange[1]+tol; 00090 }
virtual void TrkSimpTraj::visitAccept | ( | TrkVisitor * | vis | ) | const [pure virtual] |
Implemented in HelixTraj, NeutTraj, TrkCircleTraj, and TrkDifLineTraj.
Referenced by TrkMomVisitor::TrkMomVisitor().
TrkParams TrkSimpTraj::_dtparams [protected] |
Definition at line 117 of file TrkSimpTraj.h.
Referenced by NeutTraj::_np(), changePoint(), TrkDifLineTraj::operator=(), TrkCircleTraj::operator=(), NeutTraj::operator=(), HelixTraj::operator=(), operator==(), and parameters().
HepPoint3D TrkSimpTraj::_refpoint [protected] |
Definition at line 118 of file TrkSimpTraj.h.
Referenced by changePoint(), TrkDifLineTraj::operator=(), TrkCircleTraj::operator=(), HelixTraj::operator=(), operator==(), referencePoint(), and setPoint().
HepPoint3D TrkSimpTraj::_theOrigin [static] |
Definition at line 59 of file TrkSimpTraj.h.
double Trajectory::flightrange[2] [protected, inherited] |
Definition at line 83 of file Trajectory.h.
Referenced by TrkDifPieceTraj::append(), Trajectory::hiRange(), Trajectory::lowRange(), TrkDifPieceTraj::operator=(), NeutTraj::operator=(), Trajectory::operator=(), MdcSagTraj::operator=(), TrkDifPieceTraj::prepend(), TrkDifPieceTraj::resize(), TrkDifPieceTraj::setFlightRange(), Trajectory::setFlightRange(), Trajectory::Trajectory(), TrkDifPieceTraj::TrkDifPieceTraj(), and Trajectory::validFlightDistance().