12#include "TrkFitter/TrkDifLineTraj.h"
13#include "MdcGeom/BesAngle.h"
14#include "MdcRecoUtil/DifNumber.h"
15#include "MdcRecoUtil/DifPoint.h"
16#include "MdcRecoUtil/DifVector.h"
17#include "TrkBase/TrkExchangePar.h"
18#include "TrkBase/TrkVisitor.h"
19#include "TrkFitter/TrkDifLineTraj.h"
23using CLHEP::Hep3Vector;
27 :
TrkSimpTraj( pvec, pcov, lowlim, hilim, refpoint ) {}
35 HepVector subvect(
NLINPRM, 1 );
36 HepSymMatrix submat(
NLINPRM, 1 );
85double TrkDifLineTraj::x(
const double&
f )
const {
89double TrkDifLineTraj::y(
const double&
f )
const {
93double TrkDifLineTraj::z(
const double&
f )
const {
118 Hep3Vector& delDir )
const {
155 DifNumber cdip = 1. / sqrt( 1. + tanDipDf * tanDipDf );
156 DifNumber xx = -d0Df * sphi0 + flt * cphi0 * cdip + px;
157 DifNumber yy = d0Df * cphi0 + flt * sphi0 * cdip + py;
158 DifNumber zz = z0Df + flt * tanDipDf * cdip + pz;
161 dir =
DifVector( cphi0 * cdip, sphi0 * cdip, tanDipDf * cdip );
179 HepMatrix ddflct( nLinPrm(), 1 );
186 ddflct[tanDipIndex()][0] = 1.0 / ( cosd * cosd );
187 ddflct[d0Index()][0] = 0.0;
188 ddflct[phi0Index()][0] = 0.0;
189 ddflct[z0Index()][0] = -fltlen / cosd;
193 ddflct[tanDipIndex()][0] = 0;
194 ddflct[d0Index()][0] = -fltlen;
195 ddflct[phi0Index()][0] = 1.0 / cosd;
196 ddflct[z0Index()][0] = -(
tanDip() / cosd ) *
d0();
209 HepMatrix ddflct( nLinPrm(), 1 );
216 ddflct[tanDipIndex()][0] = 0.0;
217 ddflct[d0Index()][0] = 0.0;
218 ddflct[phi0Index()][0] = 0.0;
219 ddflct[z0Index()][0] = 1.0 / cosd;
222 ddflct[tanDipIndex()][0] = 0;
223 ddflct[d0Index()][0] = 1.0;
224 ddflct[phi0Index()][0] = 0.0;
225 ddflct[z0Index()][0] = 0.0;
238 return HepMatrix( nLinPrm(), 1, 0 );
242 const HepVector& oldvec,
const HepSymMatrix& oldcov,
243 HepVector& newvec, HepSymMatrix& newcov,
double fltlen ) {
245 std::cout <<
"ErrMsg(fatal)"
246 <<
"TrkDifLineTraj::paramFunc() is not implemented!" << std::endl;
252 for (
unsigned iparam = 0; iparam <
NLINPRM; iparam++ )
259 flags[iparam] =
true;
263 flags[iparam] =
false;
266 flags[iparam] =
false;
HepGeom::Point3D< double > HepPoint3D
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
double sin(const BesAngle a)
double cos(const BesAngle a)
HepGeom::Point3D< double > HepPoint3D
void setIndepPar(const DifIndepPar *par)
void cosAndSin(DifNumber &c, DifNumber &s) const
Trajectory & operator=(const Trajectory &)
virtual void getInfo(double fltLen, HepPoint3D &pos, Hep3Vector &dir) const
virtual void visitAccept(TrkVisitor *vis) const
virtual Hep3Vector direction(double fltLen) const
virtual double distTo1stError(double flt, double tol, int pathDir) const
TrkDifLineTraj(const HepVector &, const HepSymMatrix &, double lowlim=-99999., double hilim=99999., const HepPoint3D &refpoint=_theOrigin)
TrkDifLineTraj * clone() const
virtual Hep3Vector delDirect(double) const
virtual void getDFInfo(double fltLen, DifPoint &, DifVector &dir, DifVector &delDir) const
void invertParams(TrkParams *params, std::vector< bool > &flags) const
virtual double distTo2ndError(double flt, double tol, int pathDir) const
HepMatrix derivDeflect(double fltlen, deflectDirection) const
TrkDifLineTraj & operator=(const TrkDifLineTraj &)
HepMatrix derivDisplace(double fltlen, deflectDirection) const
virtual double curvature(double fltLen) const
virtual HepPoint3D position(double fltLen) const
HepMatrix derivPFract(double fltlen) const
const HepSymMatrix & covariance() const
TrkSimpTraj(const HepVector ¶ms, const HepSymMatrix &cov, const double startRange=-99999., const double endRange=99999., const HepPoint3D &refpoint=_theOrigin)
const HepPoint3D & referencePoint() const
virtual void trkVisitLineTraj(const TrkDifLineTraj *)=0