//............................. // TrajectoryBlock typedef struct{ int N; // Number of trajectories in block trajectory_t *h; // host resident (steps pointer is to device memory though) trajectory_t *d; // device resident //state_t *S_h; // array of state parameters (one for each mass hypothesis) //state_t *S_d; // array of state parameters (one for each mass hypothesis) cudaStream_t stream; // create a stream dedicated to this trajectory block int Nhits; int max_hits; int *wires_hit_d; // index of wires hit (array with Nhits=num wires hit) int *hit_index_d; // index of step closest to hit wire (NxM table in device memory) float *hit_dist_d; // distance from trajectory to hit wire (NxM table in device memory) float *hit_resi_d; // residual of hit (NxM table in device memory) float *chisq_per_dof_d; // chisq per degree of freedom (array with M=num trajectories in device memory) float *Binv_matrix_d; // inverse of "B" matrix (device) float *Binv_matrix_h; // inverse of "B" matrix (host) float *B_matrix_d; // "B" matrix (device) float *B_matrix_h; // "B" matrix (host) float *dSdR_matrix_d; // B*Ft*Vinv (device) float *dS_matrix_h; // array of deltas for all state parameters float *dS_matrix_d; // array of deltas for all state parameters }TrajectoryBlock;