BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/MdcPatRec/TrkFitter/include/TrkFitter/TrkCircleTraj.h
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3// $Id: TrkCircleTraj.h,v 1.2 2006/03/28 01:03:35 zhangy Exp $
4//
5// Description:
6// Trajectory subclass that implements a circle in the x-y plane, suitable
7// for use in a track.
8//
9// Environment:
10// Software developed for the BaBar Detector at the SLAC B-Factory.
11//
12// Author(s): Steve Schaffner
13//------------------------------------------------------------------------
14#ifndef TRKCIRCLETRAJ_H
15#define TRKCIRCLETRAJ_H
16#include "CLHEP/Geometry/Point3D.h"
17#include "TrkBase/TrkSimpTraj.h"
18#ifndef ENABLE_BACKWARDS_COMPATIBILITY
19typedef HepGeom::Point3D<double> HepPoint3D;
20#endif
21#include "CLHEP/Matrix/SymMatrix.h"
22#include "CLHEP/Vector/ThreeVector.h"
23
24class TrkVisitor;
25class TrkExchangePar;
26
27class TrkCircleTraj : public TrkSimpTraj {
28
29public:
30 TrkCircleTraj( const HepVector&, const HepSymMatrix&, double lowlim = -99999.,
31 double hilim = 99999., const HepPoint3D& refpoint = _theOrigin );
32 TrkCircleTraj( const TrkExchangePar&, double lowlim = -99999., double hilim = 99999.,
33 const HepPoint3D& refpoint = _theOrigin );
34 TrkCircleTraj( const TrkCircleTraj& ); // copy ctor
38
39 virtual HepPoint3D position( double fltLen ) const;
40 virtual Hep3Vector direction( double fltLen ) const;
41 virtual Hep3Vector delDirect( double ) const;
42 virtual void getInfo( double fltLen, HepPoint3D& pos, Hep3Vector& dir ) const;
43 virtual void getInfo( double fltLen, HepPoint3D&, Hep3Vector& dir,
44 Hep3Vector& delDir ) const;
45 virtual void getDFInfo( double fltLen, DifPoint&, DifVector& dir, DifVector& delDir ) const;
46 virtual void getDFInfo2( double fltLen, DifPoint& pos, DifVector& dir ) const;
47 virtual double curvature( double fltLen ) const;
48
49 // How far can you go using given approximation before error > tolerance,
50 // in direction pathDir?
51 virtual double distTo1stError( double flt, double tol, int pathDir ) const;
52 virtual double distTo2ndError( double flt, double tol, int pathDir ) const;
53
54 // Real versions of the base class derivative functions
55 HepMatrix derivDeflect( double fltlen, deflectDirection ) const;
56 HepMatrix derivDisplace( double fltlen, deflectDirection ) const;
57 HepMatrix derivPFract( double fltlen ) const;
58 // PointTraj functions
59 TranslateParams paramFunction() const { return TrkCircleTraj::paramFunc; }
60 // Invert the parameter. Returns true in flags if the inversion
61 // requires a change of sign in the covariance matrix.
62 void invertParams( TrkParams* params, std::vector<bool>& flags ) const;
63 // yzhang
64 int nPar() const { return NCIRPAR; }
65 // zhangy
66 //--------------------------------------------------
67 // Visitor access
68 //--------------------------------------------------
69
70 virtual void visitAccept( TrkVisitor* vis ) const;
71
72 // Define the parameters
73private:
74 enum { d0Ind = 0, phi0Ind, omegaInd };
75 enum { NCIRPAR = 3 };
76
77public:
78 static int d0Index() { return d0Ind; }
79 static int phi0Index() { return phi0Ind; }
80 static int omegaIndex() { return omegaInd; }
81 static int nCirPrm() { return NCIRPAR; }
82
83 // circle-specific accessors
84 double d0() const { return parameters()->parameter()[d0Index()]; }
85 double phi0() const;
86 double omega() const { return parameters()->parameter()[omegaIndex()]; }
87
88private:
89 // Private functions (data members are part of the base class)
90
91 double x( const double& ) const;
92 double y( const double& ) const;
93 inline double arc( const double& f ) const { return f * omega(); }
94 double angle( const double& f ) const;
95 // the real point translation function
96 static void paramFunc( const HepPoint3D& oldpoint, const HepPoint3D& newpoint,
97 const HepVector& oldpar, const HepSymMatrix& oldcov,
98 HepVector& newpar, HepSymMatrix& newcov, double fltlen );
99};
100#endif
HepGeom::Point3D< double > HepPoint3D
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
Double_t x[10]
void(* TranslateParams)(const HepPoint3D &oldpoint, const HepPoint3D &newpoint, const HepVector &oldpar, const HepSymMatrix &oldcov, HepVector &newpar, HepSymMatrix &newcov, double fltlen)
virtual Hep3Vector direction(double fltLen) const
virtual double curvature(double fltLen) const
HepMatrix derivDeflect(double fltlen, deflectDirection) const
virtual void getDFInfo(double fltLen, DifPoint &, DifVector &dir, DifVector &delDir) const
virtual void getInfo(double fltLen, HepPoint3D &pos, Hep3Vector &dir) const
TrkCircleTraj * clone() const
TrkCircleTraj(const HepVector &, const HepSymMatrix &, double lowlim=-99999., double hilim=99999., const HepPoint3D &refpoint=_theOrigin)
HepMatrix derivDisplace(double fltlen, deflectDirection) const
virtual void getInfo(double fltLen, HepPoint3D &, Hep3Vector &dir, Hep3Vector &delDir) const
virtual Hep3Vector delDirect(double) const
virtual HepPoint3D position(double fltLen) const
virtual double distTo1stError(double flt, double tol, int pathDir) const
double phi0() const
void invertParams(TrkParams *params, std::vector< bool > &flags) const
TrkCircleTraj(const TrkExchangePar &, double lowlim=-99999., double hilim=99999., const HepPoint3D &refpoint=_theOrigin)
HepMatrix derivPFract(double fltlen) const
virtual void visitAccept(TrkVisitor *vis) const
virtual double distTo2ndError(double flt, double tol, int pathDir) const
TrkCircleTraj(const TrkCircleTraj &)
virtual void getDFInfo2(double fltLen, DifPoint &pos, DifVector &dir) const
TrkCircleTraj & operator=(const TrkCircleTraj &)