BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
TrkAbsFit.h
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3//
4// Description:
5// Defines output interface for any "fitted" track (recon'ed charged,
6// hypothesized charged, or hypothesized uncharged).
7//
8// Environment:
9// Software developed for the BaBar Detector at the SLAC B-Factory.
10//
11// Author(s): Steve Schaffner, Justin Albert
12//------------------------------------------------------------------------
13
14#ifndef TRKABSFIT_HH
15#define TRKABSFIT_HH
16
17#include "MdcRecoUtil/PdtPid.h"
18#include "CLHEP/Matrix/Vector.h"
19#include "CLHEP/Matrix/Matrix.h"
20#include "CLHEP/Matrix/SymMatrix.h"
21#include "CLHEP/Vector/ThreeVector.h"
22#include "CLHEP/Geometry/Point3D.h"
23#ifndef ENABLE_BACKWARDS_COMPATIBILITY
25#endif
26using CLHEP::Hep3Vector;
27using CLHEP::HepVector;
28using CLHEP::HepMatrix;
29using CLHEP::HepSymMatrix;
30
31class BesPointErr;
32class BesVectorErr;
33class TrkDifTraj;
34class TrkSimpTraj;
35#include <iosfwd>
36class TrkExchangePar;
38
39
40// Class interface //
41class TrkAbsFit {
42
43public:
44 //********************************
45 //Global track quantities:
46 //********************************
47 virtual int charge() const = 0;
48 virtual double chisq() const = 0;
49 virtual int nDof() const = 0;
50 virtual const TrkDifTraj& traj() const = 0;
51
52
53 //********************************
54 //Information about track at a given position (flight length)
55 //********************************
56 virtual HepPoint3D position(double fltL) const = 0;
57 virtual Hep3Vector direction(double fltL) const = 0;
58 virtual Hep3Vector momentum(double fltL=0.) const = 0;
59 virtual double pt(double fltL=0.) const = 0;
60 virtual BesPointErr positionErr(double fltL) const = 0;
61 virtual BesVectorErr directionErr(double fltL) const = 0;
62 virtual BesVectorErr momentumErr(double fltL) const = 0;
63 // Interface to vertexing algorithms (M.Bondioli 7/17/98)
64 // covariance matrices of the track at fixed flight length
65 virtual HepMatrix posmomCov(double fltL) const = 0;
66 virtual void getAllCovs(double fltL,
67 HepSymMatrix& xxCov,
68 HepSymMatrix& ppCov,
69 HepMatrix& xpCov) const = 0;
70
71 // accessors to 2nd derivative of chi2 wrt x and p.
72 // x0 and p0 are filled with the pos and 3mom around which expansion
73 // takes place, whilst Weights are filled with the 2nd deriv of chi2.
74 // so that:
75 // dx=x-x0 dp=p-p0
76 //
77 // chi2(x,p)=0.5 dx^t*Wxx*dx + dx^t*Wxp*dp + 0.5 dp^t*Wpp*dp
78 // where:
79 // pos and mom are 3-dim Vectors,
80 // xxWeight ppWeight and xpWeight are 3 by 3 matrices
81 //
82 virtual void getAllWeights(double fltL,
83 HepVector& pos,
84 HepVector& mom,
85 HepSymMatrix& xxWeight,
86 HepSymMatrix& ppWeight,
87 HepMatrix& xpWeight)
88 const = 0;
89
90
91 //********************************
92 // Valid flight range
93 //********************************
94 // validRange = trajectory's valid range = flight length range
95 // over which the track can be used.
96 // foundRange = range over which the track is known to
97 // exist (i.e. from first hit to last hit). See derived class
98 // TrkFit, which is the base for all recon'ed track fits.
99
100 virtual double startValidRange() const = 0;
101 virtual double endValidRange() const = 0;
102
103 //******************************************
104 // Printing
105 //******************************************
106 virtual void printAll(std::ostream& ostr) const = 0;
107 virtual void print(std::ostream& ostr) const = 0;
108
109protected:
110 TrkAbsFit();
111 virtual ~TrkAbsFit();
112
113private:
114 // Preempt
115 TrkAbsFit& operator= (const TrkAbsFit&);
116 TrkAbsFit(const TrkAbsFit &);
117};
118
119#endif
HepGeom::Point3D< double > HepPoint3D
Definition: TrkAbsFit.h:24
virtual void print(std::ostream &ostr) const =0
virtual double startValidRange() const =0
virtual Hep3Vector momentum(double fltL=0.) const =0
virtual BesPointErr positionErr(double fltL) const =0
virtual double pt(double fltL=0.) const =0
virtual void printAll(std::ostream &ostr) const =0
virtual void getAllWeights(double fltL, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const =0
virtual double chisq() const =0
virtual int charge() const =0
virtual HepMatrix posmomCov(double fltL) const =0
virtual double endValidRange() const =0
virtual ~TrkAbsFit()
Definition: TrkAbsFit.cxx:17
virtual int nDof() const =0
virtual const TrkDifTraj & traj() const =0
virtual BesVectorErr directionErr(double fltL) const =0
virtual HepPoint3D position(double fltL) const =0
virtual void getAllCovs(double fltL, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov) const =0
virtual BesVectorErr momentumErr(double fltL) const =0
virtual Hep3Vector direction(double fltL) const =0