Next: About this document ...
/*------------------------------------------------------------------
FILE: tpt_sts.c
DESCRIPTION: Straight line tracking.
AUTHOR: ims - Iwona Sakrejda, isakrejda@lbl.gov
BUGS: -- STILL IN DEVELOPMENT --
HISTORY: 00aug96-v000a-hpl- Creation., etc.........
------------------------------------------------------------------*/
/*------------------------------------------------------------------
ROUTINE: tpt_sts_
DESCRIPTION: Main straight line tracking routine
ARGUMENTS:
**: IN:
**: par - Tracking parameters
**: par_ -
**: detector - TPC geometry info.
**: detector_ -
**: INOUT:
**: tphit - table of TPC coordinate measurements
**: tphit_ - header Structure for tphit
**: OUT:
**: res - Iwona's residual table
**: res_ - header Structure for res
**: diff_res - Another of Iwona's residual table.
**: diff_res_ - header Structure for test_res
**: strack - straight track fit parametrization.
**: strack_ - header Structure for strack
**: RETURN VALUE: STAF Condition Value
------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "tpt_sts.h"
#
/* RRB: Add additional useful constants: */
#define MAX_SECS 24
#define MAX_ROWS 45
#define MAX_HITS 100000
#define TRUE 1
#define FALSE 0
#
/* Underscore on next line is necessary to link with FORTRAN. */
long tpt_sts_(
TABLE_HEAD_ST *par_h, TPT_SPARS_ST *par ,
TABLE_HEAD_ST *tphit_h, TCL_TPHIT_ST *tphit ,
TABLE_HEAD_ST *res_h, TPT_RES_ST *res ,
TABLE_HEAD_ST *diff_res_h, TPT_RES_ST *diff_res ,
TABLE_HEAD_ST *strack_h, TPT_STRACK_ST *strack,
TABLE_HEAD_ST *detector_h, TPG_DETECTOR_ST *detector)
{
/*
* Here are examples of how you should access table members:
* *tptpar_h.nok, tptpar[1007]->colName.
*/
int drow; /* Row number increment (+1 or -1) */
int ldel; /* Index of outlier to delete */
int lkeep; /* Counter for kept outliers */
int l_outlier_keep; /* Index for kept outliers */
int max_hole; /* par->hole = max row sep. of hits */
int nshift[MAX_ROWS]; /* Shift needed to delete outliers */
int outlier[MAX_ROWS]; /* List of outliers */
int outlier_keep[MAX_ROWS]; /* List of outliers to keep */
int par_ilimit; /* par->ilimit = outlier loop limit */
int par_nmin; /* */
int row_inner; /* Innermost row to analyze */
int row_outer; /* Outermost row to analyze */
int row_range; /* Number of allowed rows */
int rowa, rowb; /* First, last allowed row */
int sector_prev; /* Sector ID in previous loop */
int use_dety, use_dety_n; /* TRUE iff using 1/dety, 1/dety_n */
long dkl, dkl_2, dkl_3; /* Temp. indices for hits in row */
long i; /* General-purpose index */
long isector; /* Sector index for arrays (0--23) */
long j, jl, jm, jn, jn_2, jn_3; /* Offsets by row number for hits */
long k, kl, km, kn, kn_2, kn_3; /* Offsets from row offset for hits */
long len=MAX_HITS; /* Dimension of hit arrays */
long lhole; /* Row separation of hits */
...
float A, B, C, D;
float Az, Bz;
float Az_norm; /* 1.0/sqrt(Az*Az) */
float a_ddy[MAX_ROWS]; /* Absolute distance to track in xy */
float a_ddz[MAX_ROWS]; /* Absolute distance to track in z */
float alpha; /* Pad-row crossing angle (radians) */
float ax, bx;
float ax_norm; /* 1.0/sqrt(ax*ax) */
...
#define SIGMAB 0.0 /* Not used here yet... */
#define SIGMAC 30.0 /* Not used here yet... */
#define SIGMAF 0.0 /* Not used here yet... */
#define SIGMAG 0.0 /* Not used here yet... */
#define RADTODEG 57.295780 /* 360/(2*pi)=57.2957795132 */
#define sigma_xy 0.05 /* Error in xy; (0.05 cm) */
#define sigma_z 0.05 /* Error in z; (0.05 cm) */
#define sigma2y sigma_xy*sigma_xy /* Error^2 in xy */
#define sigma2z sigma_z*sigma_z /* Error^2 in z */
FILE *dataf;
TCL_TPHIT_ST *track[MAX_ROWS];
TCL_TPHIT_ST *track_del[MAX_ROWS]; /* List of hits to delete */
TCL_TPHIT_ST *pjjp;
TCL_TPHIT_ST *pjlp;
TCL_TPHIT_ST *pjp, *pjp_2, *pjp_3;
TCL_TPHIT_ST *pjlp_best, *pjp_2_best, *pjp_3_best;
/* set all the counters to 0 */
res_h[0].nok = 0;
diff_res_h[0].nok = 0;
strack_h[0].nok = 0;
/* reset the track flag, tfs does not do it.....*/
for (l=0; l<tphit_h[0].nok; l++) tphit[l].track=0;
/* Open the file for the residuals*/
dataf=fopen("mydata","w");
******************************* remaining code .....
Lanny Ray
2/20/1998