Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DEventProcessor_fdc_hists.h
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DEventProcessor_fdc_hists.h
4 // Created: Wed Oct 10 13:30:37 EDT 2007
5 // Creator: davidl (on Darwin fwing-dhcp95.jlab.org 8.10.1 i386)
6 //
7 
8 #ifndef _DEventProcessor_fdc_hists_
9 #define _DEventProcessor_fdc_hists_
10 
11 #include <pthread.h>
12 #include <map>
13 #include <vector>
14 #include <deque>
15 using std::map;
16 
17 #include <TTree.h>
18 #include <TFile.h>
19 #include <TH1.h>
20 #include <TH2.h>
21 #include <TH3.h>
22 
23 #include <JANA/JFactory.h>
24 #include <JANA/JEventProcessor.h>
25 #include <JANA/JEventLoop.h>
26 
27 #include <PID/DKinematicData.h>
29 #include <TRACKING/DMCTrackHit.h>
30 #include <CDC/DCDCTrackHit.h>
31 #include <FDC/DFDCHit.h>
32 #include <FDC/DFDCGeometry.h>
33 #include <FCAL/DFCALShower.h>
34 #include <FDC/DFDCPseudo.h>
35 #include <FDC/DFDCIntersection.h>
36 #include <DMatrixSIMD.h>
37 
38 #include "FDC_branch.h"
39 #include "FDChit_branch.h"
40 
41 class DCDCTrackHit;
42 
43 typedef struct{
44  double w,s,cosa,sina;
45  double t,z;
46  int wire,layer;
47 }wire_t;
48 
49 typedef struct{
50  DMatrix4x1 S;
51  DMatrix4x4 J;
52  DMatrix4x1 Skk;
53  DMatrix4x4 Ckk;
54  double z,t;
55  int num_hits;
56  unsigned int h_id;
58 
59 typedef struct{
60  unsigned int id;
61  double ures,vres;
62  DMatrix4x1 S;
63  DMatrix4x4 C;
65  DMatrix4x2 H_T;
66  DMatrix2x4 H;
67  double doca;
68  double drift,drift_time;
69 }update_t;
70 
71 typedef struct{
72  unsigned int id;
77  double ures,vres;
78  double R;
79  double drift,drift_time;
81 
82 
83 
84 typedef struct{
85  DMatrix3x1 A;
86  DMatrix3x3 E;
87 }align_t;
88 
89 
90 typedef struct{
91  bool matched;
93  vector<const DFDCPseudo *>hits;
94 }segment_t;
95 
96 
97 class DEventProcessor_fdc_hists:public JEventProcessor{
98 
99  public:
102 
103  TDirectory *dir;
104  TTree *fdctree;
107  TTree *fdchittree;
111 
115  };
121  };
126  };
127 
128 
129  private:
130  vector<vector<DFDCWire*> >fdcwires;
131 
132 
133  jerror_t init(void); ///< Invoked via DEventProcessor virtual method
134  jerror_t brun(JEventLoop *loop, int32_t runnumber);
135  jerror_t evnt(JEventLoop *loop, uint64_t eventnumber); ///< Invoked via DEventProcessor virtual method
136  jerror_t erun(void); ///< Invoked via DEventProcessor virtual method
137  jerror_t fini(void); ///< Invoked via DEventProcessor virtual method
138 
139  DMatrix4x1 FitLine(vector<const DFDCPseudo*> &fdchits);
140  DMatrix4x1 FitLine(vector<const DFDCPseudo*> &fdchits,
141  double &var_x,double &cov_x_tx,
142  double &var_tx,double &chi2x,
143  double &var_y,double &cov_y_ty,
144  double &var_ty,double &chi2y);
145  jerror_t DoFilter(DMatrix4x1 &S,
146  vector<const DFDCPseudo*> &fdchits);
147  jerror_t KalmanFilter(double anneal_factor,
148  DMatrix4x1 &S,DMatrix4x4 &C,
149  vector<const DFDCPseudo *>&hits,
150  deque<trajectory_t>&trajectory,
151  vector<strip_update_t>&updates,
152  double &chi2,unsigned int &ndof);
153  jerror_t KalmanFilter(double anneal_factor,
154  DMatrix4x1 &S,DMatrix4x4 &C,
155  vector<const DFDCPseudo *>&hits,
156  deque<trajectory_t>&trajectory,
157  vector<update_t>&updates,
158  double &chi2,unsigned int &ndof);
159  jerror_t Smooth(DMatrix4x1 &Ss,DMatrix4x4 &Cs,
160  deque<trajectory_t>&trajectory,
161  vector<const DFDCPseudo *>&hits,
162  vector<strip_update_t>updates,
163  vector<strip_update_t>&smoothed_updates);
164  jerror_t Smooth(DMatrix4x1 &Ss,DMatrix4x4 &Cs,
165  deque<trajectory_t>&trajectory,
166  vector<const DFDCPseudo *>&hits,
167  vector<update_t>updates,
168  vector<update_t>&smoothed_updates);
169  jerror_t SetReferenceTrajectory(double z,DMatrix4x1 &S,
170  deque<trajectory_t>&trajectory,
171  vector<const DFDCPseudo *>&wires);
172 
173  jerror_t FindSegments(vector<const DFDCPseudo*>&pseudos,
174  vector<segment_t>&segments);
175  jerror_t LinkSegments(vector<segment_t>segments[4],
176  vector<vector<const DFDCPseudo *> >&LinkedSegments);
177 
178  jerror_t FindOffsets(vector<const DFDCPseudo *>&hits,
179  vector<update_t>smoothed_updates);
180  jerror_t FindOffsets(vector<const DFDCPseudo *>&hits,
181  vector<strip_update_t>smoothed_updates);
182 
183 
184  double GetDriftDistance(double t);
185  double GetDriftVariance(double t);
186 
187  pthread_mutex_t mutex;
191  TH2F *Hdrift_time;
199  TH2F *Hdv_vs_dE;
201 
202  double mT0;
204  double fdc_drift_table[140];
207 
208  double endplate_z;
209  int myevt;
210 
211  bool DoAlign;
212 
213  vector<align_t>alignments;
214 };
215 
216 #endif // _DEventProcessor_fdc_hists_
217 
vector< vector< DFDCWire * > > fdcwires
jerror_t erun(void)
Invoked via DEventProcessor virtual method.
Int_t layer
jerror_t KalmanFilter(double anneal_factor, DMatrix4x1 &S, DMatrix4x4 &C, vector< const DFDCPseudo * > &hits, deque< trajectory_t > &trajectory, vector< strip_update_t > &updates, double &chi2, unsigned int &ndof)
jerror_t evnt(JEventLoop *loop, uint64_t eventnumber)
Invoked via DEventProcessor virtual method.
jerror_t FindSegments(vector< const DFDCPseudo * > &pseudos, vector< segment_t > &segments)
vector< const DFDCPseudo * > hits
#define H(x, y, z)
jerror_t fini(void)
Invoked via DEventProcessor virtual method.
jerror_t LinkSegments(vector< segment_t >segments[4], vector< vector< const DFDCPseudo * > > &LinkedSegments)
#define S(str)
Definition: hddm-c.cpp:84
jerror_t Smooth(DMatrix4x1 &Ss, DMatrix4x4 &Cs, deque< trajectory_t > &trajectory, vector< const DFDCPseudo * > &hits, vector< strip_update_t >updates, vector< strip_update_t > &smoothed_updates)
jerror_t brun(JEventLoop *loop, int32_t runnumber)
jerror_t DoFilter(DMatrix4x1 &S, vector< const DFDCPseudo * > &fdchits)
DMatrix4x1 FitLine(vector< const DFDCPseudo * > &fdchits)
jerror_t SetReferenceTrajectory(double z, DMatrix4x1 &S, deque< trajectory_t > &trajectory, vector< const DFDCPseudo * > &wires)
jerror_t init(void)
Invoked via DEventProcessor virtual method.
jerror_t FindOffsets(vector< const DFDCPseudo * > &hits, vector< update_t >smoothed_updates)