8 #ifndef _DEventProcessor_dc_alignment_
9 #define _DEventProcessor_dc_alignment_
23 #include <JANA/JFactory.h>
24 #include <JANA/JEventProcessor.h>
25 #include <JANA/JEventLoop.h>
26 #include <JANA/JCalibration.h>
68 double dx_u,
dy_u,dx_d,dy_d;
79 double drift,drift_time,
t;
115 const char*
className(
void){
return "DEventProcessor_dc_alignment";}
186 jerror_t
brun(jana::JEventLoop *eventLoop, int32_t runnumber);
187 jerror_t
evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber);
192 vector<const DFDCPseudo*> &fdchits);
194 vector<const DFDCPseudo*> &fdchits);
200 vector<const DFDCPseudo *>&hits,
201 deque<trajectory_t>&trajectory,
202 vector<update_t>&updates,
203 double &chi2,
unsigned int &ndof);
206 vector<const DCDCTrackHit *>&hits,
207 deque<trajectory_t>&trajectory,
208 vector<cdc_update_t>&updates,
209 double &chi2,
unsigned int &ndof,
210 bool timebased=
false);
213 vector<const DFDCPseudo*>&hits,
214 deque<trajectory_t>&trajectory,
215 vector<wire_update_t>&updates,
216 double &chi2,
unsigned int &ndof);
219 deque<trajectory_t>&trajectory,
220 vector<const DFDCPseudo *>&hits,
221 vector<update_t>updates,
222 vector<update_t>&smoothed_updates);
224 deque<trajectory_t>&trajectory,
225 vector<const DCDCTrackHit *>&hits,
226 vector<cdc_update_t>&updates,
227 vector<cdc_update_t>&smoothed_updates);
229 deque<trajectory_t>&trajectory,
230 vector<const DFDCPseudo*>&hits,
231 vector<wire_update_t>updates,
232 vector<wire_update_t>&smoothed_updates);
235 deque<trajectory_t>&trajectory,
236 vector<const DFDCPseudo *>&hits);
238 deque<trajectory_t>&trajectory,
241 jerror_t
FindOffsets(vector<const DFDCPseudo *>&hits,
242 vector<update_t>&smoothed_updates);
243 jerror_t
FindOffsets(vector<const DCDCTrackHit*>&hits,
244 vector<cdc_update_t>&updates);
245 jerror_t
FindOffsets(vector<const DFDCPseudo *>&hits,
246 vector<wire_update_t>&smoothed_updates);
249 vector<const DFDCPseudo*>&hits);
251 unsigned int locate(vector<double>&xx,
double x);
268 double tx,
double ty,
double tdir2,
double one_over_d,
269 double wx,
double wy,
double wdir2,
270 double tdir_dot_wdir,
271 double tdir_dot_diff,
272 double wdir_dot_diff,
273 double dx0,
double dy0,
274 double diffx,
double diffy,
278 void PlotLines(deque<trajectory_t>&traj);
360 #endif // _DEventProcessor_dc_alignment_
double GetDriftDistance(double t)
TH2F * Hcdcres_vs_drift_time
void PlotLines(deque< trajectory_t > &traj)
vector< vector< double > > sag_phi_offset
jerror_t DoFilterAnodePlanes(double t0, double start_z, DMatrix4x1 &S, vector< const DFDCPseudo * > &fdchits)
double short_drift_func[3][3]
~DEventProcessor_dc_alignment()
double cdc_drift_distance(double dphi, double delta, double t)
jerror_t init(void)
Called once at program start.
double GetDriftVariance(double t)
vector< cathode_align_t > fdc_cathode_alignments
DMatrix3x1 fdc_drift_parms
TH2F * Hcdc_ring_time[28]
vector< wire_align_t > fdc_alignments
vector< vector< cdc_offset_t > > cdc_offsets
vector< vector< cdc_align_t > > cdc_alignments
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
jerror_t DoFilterCathodePlanes(double t0, double start_z, DMatrix4x1 &S, vector< const DFDCPseudo * > &fdchits)
jerror_t EstimateT0(vector< update_t > &updates, vector< const DFDCPseudo * > &hits)
void ComputeGMatrices(double s, double t, double scale, double tx, double ty, double tdir2, double one_over_d, double wx, double wy, double wdir2, double tdir_dot_wdir, double tdir_dot_diff, double wdir_dot_diff, double dx0, double dy0, double diffx, double diffy, double diffz, DMatrix1x4 &G, DMatrix4x1 &G_T)
trajectory_t(double z, double t, DMatrix4x1 S, DMatrix4x4 J, DMatrix4x1 Skk, DMatrix4x4 Ckk, unsigned int h_id=0, unsigned int num_hits=0)
DEventProcessor_dc_alignment()
double fdc_drift_distance(double t)
jerror_t GetProcessNoise(double dz, double chi2c_factor, double chi2a_factor, double chi2a_corr, const DMatrix4x1 &S, DMatrix4x4 &Q)
unsigned int MIN_INTERSECTIONS
vector< align_t > alignments
jerror_t SetReferenceTrajectory(double t0, double z, DMatrix4x1 &S, deque< trajectory_t > &trajectory, vector< const DFDCPseudo * > &hits)
vector< vector< DFDCWire * > > fdcwires
jerror_t fini(void)
Called after last event of last event source has been processed.
Double_t sigma[NCHANNELS]
vector< double > fdc_drift_table
vector< double > cdc_drift_table
vector< vector< double > > max_sag
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
TH2F * Hres_vs_drift_time
double long_drift_func[3][3]
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
double target_to_fcal_distance
jerror_t DoFilter(double t0, double z, DMatrix4x1 &S, vector< const DCDCTrackHit * > &hits)
jerror_t FindOffsets(vector< const DFDCPseudo * > &hits, vector< update_t > &smoothed_updates)
double cdc_variance(double t)
unsigned int locate(vector< double > &xx, double x)
jerror_t Smooth(DMatrix4x1 &Ss, DMatrix4x4 &Cs, deque< trajectory_t > &trajectory, vector< const DFDCPseudo * > &hits, vector< update_t >updates, vector< update_t > &smoothed_updates)
TH1F * Hintersection_match
void UpdateWireOriginAndDir(unsigned int ring, unsigned int straw, DVector3 &origin, DVector3 &wdir)
jerror_t KalmanFilter(double anneal_factor, DMatrix4x1 &S, DMatrix4x4 &C, vector< const DFDCPseudo * > &hits, deque< trajectory_t > &trajectory, vector< update_t > &updates, double &chi2, unsigned int &ndof)
TH1F * Hintersection_link_match
const char * className(void)