TrkSimpTraj Class Reference

#include <TrkSimpTraj.h>

Inheritance diagram for TrkSimpTraj:

TrkDifTraj TrkKalDeriv Trajectory HelixTraj NeutTraj TrkCircleTraj TrkDifLineTraj List of all members.

Public Member Functions

 TrkSimpTraj (const HepVector &params, const HepSymMatrix &cov, const double startRange=-99999., const double endRange=99999., const HepPoint3D &refpoint=_theOrigin)
 TrkSimpTraj (const TrkParams &params, const double startRange=-99999., const double endRange=99999., const HepPoint3D &refpoint=_theOrigin)
virtual ~TrkSimpTraj ()
virtual TrkSimpTrajclone () const =0
TrkParamsparameters ()
const TrkParamsparameters () const
virtual const TrkSimpTrajlocalTrajectory (double fltLen, double &localFlt) const
const HepPoint3DreferencePoint () 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)
TrkSimpTrajinvert ()
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 &)
TrkSimpTrajoperator= (const TrkSimpTraj &)

Detailed Description

Definition at line 55 of file TrkSimpTraj.h.


Constructor & Destructor Documentation

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]

Definition at line 53 of file TrkSimpTraj.cxx.

00055 { }

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 {}


Member Function Documentation

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]

Definition at line 51 of file Trajectory.cxx.

00052 {
00053   return fabs(tolerance);
00054 }

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 }

virtual void TrkSimpTraj::invertParams ( TrkParams newparams,
std::vector< bool > &  flags 
) const [pure virtual]

Implemented in HelixTraj, NeutTraj, TrkCircleTraj, and TrkDifLineTraj.

Referenced by invert().

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]

Definition at line 81 of file TrkSimpTraj.h.

References _dtparams.

00081 {return &_dtparams;}

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]

Implemented in HelixTraj, NeutTraj, TrkCircleTraj, and TrkDifLineTraj.

Referenced by changePoint().

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]

Reimplemented from Trajectory.

Reimplemented in HelixTraj.

virtual void TrkSimpTraj::printAll ( std::ostream os  )  const [virtual]

Reimplemented from Trajectory.

Reimplemented in HelixTraj.

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().

00093 { return hiRange()-lowRange(); }

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]

Definition at line 96 of file TrkSimpTraj.h.

References _refpoint.

00096 {_refpoint = newpoint;}

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().


Member Data Documentation

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().


Generated on Tue Nov 29 23:36:17 2016 for BOSS_7.0.2 by  doxygen 1.4.7