Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DTrackFitterRiemann.h
Go to the documentation of this file.
1 #ifndef _DTrackFitterRiemann_
2 #define _DTrackFitterRiemann_
3 
4 #include <vector>
5 
6 #include <JANA/JFactory.h>
7 #include <JANA/JGeometry.h>
9 #include <DVector3.h>
10 #include <DVector2.h>
11 #include <DMatrix.h>
12 
13 using namespace std;
14 
15 typedef struct{
17  double covx,covy,covxy; ///< error info for x and y coordinates
18  double z,covz;
19  const DFDCPseudo *fdc;
20  const DCDCTrackHit *cdc;
22 
24  public:
25  DTrackFitterRiemann(JEventLoop *loop);
27 
28  // Virtual methods from TrackFitter base class
29  string Name(void) const {return string("Riemann");}
30  fit_status_t FitTrack(void);
31  double ChiSq(fit_type_t fit_type, DReferenceTrajectory *rt, double *chisq_ptr=NULL, int *dof_ptr=NULL, vector<pull_t> *pulls_ptr=NULL);
32 
33  jerror_t AddCDCHit(const DCDCTrackHit *cdchit);
34  jerror_t AddFDCHit(const DFDCPseudo *fdchit);
35  jerror_t AddHitXYZ(double x,double y, double z,double covx,double covy,
36  double covxy);
37  jerror_t SetSeed(double my_q,const DVector3 &pos,const DVector3 &mom,
38  double mass);
39  double GetProcessNoise(const DVector2 &XY,const double z);
40  jerror_t ComputeCRPhi();
41  jerror_t ComputeCR();
42  jerror_t ComputeCz();
43  jerror_t GetAxialPosition(double &sperp,const DVector2 &XYold,
44  DRiemannHit_t *hit);
45  jerror_t GetStereoPosition(double &sperp,DVector2 &XYold,
46  DRiemannHit_t *hit);
47  double GetStereoZ(double dx,double dy,DRiemannHit_t *hit);
48  jerror_t GetFDCPosition(DRiemannHit_t *hit);
49  DVector2 GetHelicalPosition(double sperp);
50  jerror_t FitCircle();
51  jerror_t FitLine();
52  jerror_t GetCharge();
53  jerror_t ComputeIntersections();
54  double ChiSq();
55 
56  private:
57  // list of hits on track
58  vector<DRiemannHit_t *>my_circle_hits;
59  vector<DRiemannHit_t *>my_line_hits;
60 
61  // mass variable
62  double mass2;
63 
64  // Tracking parameters
65  double phi0,z_vertex,tanl,q,rc,xc,yc,D;
66  double p,theta,one_over_vcosl;
67 
68  // Magnetic field
69  double B;
70 
71  // Covariance matrices
75 
76  // Vectors of projections and arc lengths
77  vector<DVector2>projections;
78  vector<double>s;
79 
80  // Normal vector to plane intersecting Riemann surface
82  double c_origin; // distance to "origin" for Riemann circle fit
83 };
84 #endif // _DTrackFitterRiemann_
TMatrixD DMatrix
Definition: DMatrix.h:14
The DTrackFitter class is a base class for different charged track fitting algorithms. It does not actually fit the track itself, but provides the interface and some common support features most algorthims will need to implement.
Definition: DTrackFitter.h:61
TVector2 DVector2
Definition: DVector2.h:9
TVector3 DVector3
Definition: DVector3.h:14
Double_t x[NCHANNELS]
Definition: st_tw_resols.C:39
char string[256]
#define y
vector< DRiemannHit_t * > my_line_hits
class DFDCPseudo: definition for a reconstructed point in the FDC
Definition: DFDCPseudo.h:74
string Name(void) const
const DFDCPseudo * fdc
const DCDCTrackHit * cdc
vector< DRiemannHit_t * > my_circle_hits
vector< DVector2 > projections