Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DFDCSegment_factory.h
Go to the documentation of this file.
1 //******************************************************************
2 // DFDCSegment_factory.h: class definition for a factory creating
3 // track segments from pseudopoints
4 //******************************************************************
5 #ifndef DFACTORY_DFDCSEGMENT_H
6 #define DFACTORY_DFDCSEGMENT_H
7 
8 #include "JANA/JFactory.h"
9 #include "JANA/JException.h"
10 #include "JANA/JStreamLog.h"
11 
12 #include "DFDCSegment.h"
13 #include "DFDCPseudo.h"
14 #include "DFDCHit.h"
15 
18 #include <TDecompLU.h>
19 #include <DVector2.h>
20 
21 #include <algorithm>
22 #include <map>
23 #include <cmath>
24 
25 /* The folowing are for interpreting grid of Lorentz deflection data */
26 /*#define PACKAGE_Z_POINTS 10
27 #define LORENTZ_X_POINTS 21
28 #define LORENTZ_Z_POINTS 4*PACKAGE_Z_POINTS
29 */
30 
31 ///
32 /// class DFDCSegment_factory: definition for a JFactory that
33 /// produces space points from pseudopoints.
34 ///
35 class DFDCSegment_factory : public JFactory<DFDCSegment> {
36  public:
37 
38  ///
39  /// DFDCSegment_factory::DFDCSegment_factory():
40  /// default constructor -- initializes log file
41  ///
43 
44  ///
45  /// DFDCSegment_factory::~DFDCSegment_factory():
46  /// default destructor -- closes log file
47  ///
49 
50  typedef struct{
52  double z,covr,covrphi;
53  }xyz_t;
54 
55 
56  jerror_t FindSegments(vector<const DFDCPseudo*>&points);
57  // jerror_t CorrectPoints(vector<DFDCPseudo*>point,DMatrix XYZ);
58  jerror_t GetHelicalTrackPosition(double z,const DFDCSegment *segment,
59  double &xpos,double &ypos);
60  jerror_t RiemannHelicalFit(vector<const DFDCPseudo*>&points);
61  jerror_t RiemannCircleFit(vector<const DFDCPseudo*>&points,
62  DMatrix &CRPhi);
63  jerror_t RiemannLineFit(vector<const DFDCPseudo *>&points,
64  DMatrix &CR,vector<xyz_t>&XYZ);
65  jerror_t UpdatePositionsAndCovariance(unsigned int n,double r1sq,
66  vector<xyz_t> &XYZ,DMatrix &CRPhi,
67  DMatrix &CR);
68  double GetRotationSense(unsigned int n,vector<xyz_t>&XYZ,DMatrix &CR,
69  DMatrix &CRPhi, vector<const DFDCPseudo *>&points);
70  jerror_t CircleFit(vector<const DFDCPseudo *>&points);
71  jerror_t LineFit(vector<const DFDCPseudo *>&points);
72  double ComputeCircleChiSq(vector<const DFDCPseudo *>&neighbors);
73 
74  void FillSegmentData(DFDCSegment *segment);
75 
76  protected:
77  ///
78  /// DFDCSegment_factory::brun():
79  ///
80  jerror_t brun(JEventLoop *eventLoop, int32_t runnumber);
81 
82  ///
83  /// DFDCSegment_factory::evnt():
84  /// this is the place that finds track segments and
85  /// converts pseudopoints into space points.
86  ///
87  jerror_t evnt(JEventLoop *eventLoop, uint64_t eventNo);
88 
89  private:
90  JStreamLog* _log;
91 
92  double N[3];
93  double varN[3][3];
95  double xavg[3],var_avg;
96 
97  // Track parameters
98  double tanl,z0,zvertex,D,phi0;
99  double var_tanl,Phi1;
101  unsigned int ref_plane;
103 
104  double chisq;
105  int Ndof;
106 
109 // double ref_time;
110 // bool use_tof,use_sc;
113 
115 };
116 
117 #endif // DFACTORY_DFDCSEGMENT_H
118 
jerror_t CircleFit(vector< const DFDCPseudo * > &points)
TMatrixD DMatrix
Definition: DMatrix.h:14
double ComputeCircleChiSq(vector< const DFDCPseudo * > &neighbors)
double GetRotationSense(unsigned int n, vector< xyz_t > &XYZ, DMatrix &CR, DMatrix &CRPhi, vector< const DFDCPseudo * > &points)
TVector2 DVector2
Definition: DVector2.h:9
jerror_t LineFit(vector< const DFDCPseudo * > &points)
jerror_t brun(JEventLoop *eventLoop, int32_t runnumber)
DFDCSegment_factory::brun():
DFDCSegment_factory()
DFDCSegment_factory::DFDCSegment_factory(): default constructor – initializes log file...
jerror_t RiemannLineFit(vector< const DFDCPseudo * > &points, DMatrix &CR, vector< xyz_t > &XYZ)
jerror_t evnt(JEventLoop *eventLoop, uint64_t eventNo)
DFDCSegment_factory::evnt(): this is the place that finds track segments and converts pseudopoints in...
~DFDCSegment_factory()
DFDCSegment_factory::~DFDCSegment_factory(): default destructor – closes log file.
jerror_t RiemannCircleFit(vector< const DFDCPseudo * > &points, DMatrix &CRPhi)
jerror_t RiemannHelicalFit(vector< const DFDCPseudo * > &points)
jerror_t UpdatePositionsAndCovariance(unsigned int n, double r1sq, vector< xyz_t > &XYZ, DMatrix &CRPhi, DMatrix &CR)
const DLorentzDeflections * lorentz_def
jerror_t FindSegments(vector< const DFDCPseudo * > &points)
class DFDCSegment_factory: definition for a JFactory that produces space points from pseudopoints...
class DFDCSegment: definition for a track segment in the FDC
Definition: DFDCSegment.h:31
const DMagneticFieldMap * bfield
void FillSegmentData(DFDCSegment *segment)
jerror_t GetHelicalTrackPosition(double z, const DFDCSegment *segment, double &xpos, double &ypos)