2#include "TrkBase/TrkCompTrk.h"
3#include "TrkBase/HelixTraj.h"
4#include "TrkBase/NeutParams.h"
5#include "TrkBase/NeutTraj.h"
6#include "TrkBase/TrkMomCalculator.h"
7#include "TrkBase/TrkSimpTraj.h"
12#include "MdcGeom/BesAngle.h"
13#include "MdcRecoUtil/BesPointErr.h"
14#include "MdcRecoUtil/BesVectorErr.h"
15#include "MdcRecoUtil/DifIndepPar.h"
16#include "MdcRecoUtil/DifPoint.h"
17#include "MdcRecoUtil/DifVector.h"
18#include "PatBField/BField.h"
19#include "ProxyDict/IfdStrKey.h"
20#include "TrkBase/TrkExchangePar.h"
21#include "TrkBase/TrkHelixUtils.h"
22#include "TrkBase/TrkPoca.h"
52 : _bf( rhs._bf ), _chisq( rhs._chisq ), _nDof( rhs._nDof ) {
66 if ( &right ==
this )
return *
this;
69 _chisq = right.
chisq();
122 symErr.assign( err );
134 symErr.assign( err );
156 if ( _charge == -1 || _charge == 1 )
158 ostr <<
"Charged Particle -> Helix Trajectory" << endl;
161 ostr <<
" d0=" << theTraj.
d0() << endl;
162 ostr <<
" z0=" << theTraj.
z0() << endl;
163 ostr <<
" omega=" << theTraj.
omega() << endl;
164 ostr <<
" tanDip=" << theTraj.
tanDip() << endl;
168 ostr <<
"Neutral Particle -> NeutTraj" << endl;
169 NeutTraj& theTraj = (NeutTraj&)
traj();
170 ostr <<
" phi0=" << BesAngle( theTraj.
params().
phi0() ).rad() << endl;
171 ostr <<
" d0=" << theTraj.
params().
d0() << endl;
172 ostr <<
" z0=" << theTraj.
params().
z0() << endl;
173 ostr <<
" p=" << theTraj.
params().
p() << endl;
174 ostr <<
" tanDip=" << theTraj.
params().
tanDip() << endl;
186 HepMatrix& xpCov )
const {
192 HepSymMatrix& xxWeight, HepSymMatrix& ppWeight,
193 HepMatrix& xpWeight )
const {
200 HepSymMatrix& xxWeight, HepSymMatrix& ppWeight,
201 HepMatrix& xpWeight )
const {
205 getAllWeights( fltL, pos, mom, xxWeight, ppWeight, xpWeight );
HepGeom::Point3D< double > HepPoint3D
HepSymMatrix & covariance()
const DifIndepPar * indepPar() const
HepSymMatrix errorMatrix(const HepSymMatrix &e) const
virtual Trajectory * clone() const =0
virtual HepPoint3D position(double) const =0
virtual Hep3Vector direction(double) const =0
double endValidRange() const
const TrkCompTrk & operator=(const TrkCompTrk &right)
double startValidRange() const
virtual HepMatrix posmomCov(double fltL) const
BesVectorErr momentumErr(double fltL) const
BesVectorErr directionErr(double fltL) const
virtual void printAll(std::ostream &) const
virtual void getAllCovs(double fltL, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov) const
double pt(double fltL=0.) const
Hep3Vector direction(double fltL) const
Hep3Vector momentum(double fltL=0.) const
virtual void getAllWeights(double fltL, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const
BesPointErr positionErr(double fltL) const
const MdcPatRec::BField & bField() const
const TrkDifTraj & traj() const
TrkCompTrk(const BesPointErr &pos, const BesVectorErr &mom, const HepMatrix &xpCov, int charge, double chisq, int nDoF, const MdcPatRec::BField *bf)
virtual void print(std::ostream &) const
HepPoint3D position(double fltL) const
virtual void getDFInfo2(double fltLen, DifPoint &pos, DifVector &direction) const
const HepVector & params() const
const HepSymMatrix & covariance() const
static NeutParams lineFromMomErr(const BesPointErr &vertex, const BesVectorErr &p, const HepMatrix &cxp, double sign, const BField &)
static TrkExchangePar helixFromMomErr(const BesPointErr &vertex, const BesVectorErr &p, const HepMatrix &cxp, double sign, const BField &)
static Hep3Vector vecMom(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
static double ptMom(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
static void getAllWeights(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight)
static void getAllCovs(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov)
static HepMatrix posmomCov(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
static BesVectorErr errMom(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)