*-- Author : Stephen Burke SUBROUTINE FFKLMN(INFTUR,JTR) *-----------------------------------------Updates 30/09/94------- **: FFKLMN.......SB. Corrections moved to FFCORR. *-----------------------------------------Updates 17/05/94------- **: FFKLMN 50106 SB. Bug fix for low momentum. *-----------------------------------------Updates 22/11/93------- **: FFKLMN.......SB. Farm changes. **: FFKLMN.......SB. New params in FFOUT call. **: FFKLMN.......SB. Debug histos only for .GE.2 planar segs. *-----------------------------------------Updates 27/07/93------- **: FFKLMN 30907 RP. Farm changes. *-----------------------------------------Updates 03/05/93------- **: FFKLMN 30907 SB. Radius ignored if there are planar hits. *-----------------------------------------Updates 29/10/92------- **: FFKLMN 30907 SB. Small change in debug steering. *-----------------------------------------Updates 25/08/92------- **: FFKLMN 30907 SB. Trap SGI overwrites. *-----------------------------------------Updates 06/08/92------- **: FFKLMN 30907 SB. Cosmetic changes; new histograms. *-----------------------------------------Updates 04/05/92------- **: FFKLMN 30907 SB. Severity added to ERRLOG messages. **: FFKLMN 30205.SB. ERRLOG error numbers changed. *-----------------------------------------Updates 28/01/92------- **: FFKLMN 30205.SB. Make efficiency histograms conditional on PMCUT *-----------------------------------------Updates 24/01/92------- **: FFKLMN 30205.SB. BKFMT calls moved to FFKAL. **: FFKLMN 30205.SB. Check the drift sign in debug mode. **: FFKLMN 30205.SB. Count failed tracks. **: FFKLMN 30205.SB. Starting errors must be .LE. errors in FTUR bank. **: FFKLMN 30205.SB. ERRLOG message format changed. *-----------------------------------------Updates---------------- ********************************************************************** * * * Read the FPATREC output banks, pick up the digi list and fit * * * * INFTUR is the track bank index and JTR is the track number * * * ********************************************************************** LOGICAL FFRJCT,LFAILP,LFAILR *KEEP,FKNPL. * * Per-track values can go in H1WORK; note that LTRUE and LFIRST must * be set at least per event. * * This is about 36k words long; the remaining common blocks are * about 3.6k in total. Some of this could be in /H1WORK/, but the * blocks would have to be reorganised. * * /FKPROJ/ * /FKFILT/ * /FKSMTH/ * /FKINT/ * /FKRSID/ * /FKTRUE/ * /FKDBG/ *KEEP,FKCNTL. *KEEP,FKFLAG. *KEEP,FKCONS. *KEEP,FKPROJ. *KEEP,FKSMTH. *KEEP,FKRSID. *KEEP,FKTRUE. *KEEP,FKMEAS. *KEEP,FFSTEE. *KEEP,FFSCAL. * Counters *KEEP,FFGEO. *KEEP,FFWBI. * Work bank indices (note that INDKTR is *NOT* a work bank index!) *KEEP,FFDBG. *KEEP,FKDBG. *KEEP,FKINT. *KEEP,FRLORA. *KEEP,BCS. *KEEP,CNSTBF. *KEEP,FTANG. * Statement functions for track angle corrections... * (assumes COMMON FRLORA present) * *KEEP,STFUNCT. * index of element before row number IROW * index of L'th element of row number IROW * L'th integer element of the IROW'th row of bank with index IND * L'th real element of the IROW'th row of bank with index IND *KEEP,STFCLW. * statement functions acting on the BOS COMMON LW * index of element before row number LWROW * index of L-th element of row number LWROW * L-th integer element of the LWROW'th row in bank with index LND * L-th real element of the LWROW'th row in bank with index LND * *KEEP,FTFUNCT. * Statement functions for RADIAL Chamber data access. * Using Channel Number J * Module, Wedge-pair and Z-plane numbers... * Statement function for obtaining WEDGE numbers(0-47) of * wires at plus and minus ends of Cell numbers * Statement function for obtaining IOS wire number (1-36) * Statement functions for PLANAR Chamber data access. * Using Channel Number J * Module, orientation, W-cell and Z-plane numbers... * IPSMD in range 0:8 Planar module number. * * IOS wire number (runs from 0 to 36) * SB plane numbers (1-72) from cell number * Module, orientation, wire and (typical) cell number from plane * number in the range 1-72 (planars, radials and combined) *KEND. ********************************************************************** * Set up the Kalman filter arrays CALL FFFILL(JTR,LFAILP,LFAILR) IF (LFAILP) CALL ERRLOG(321,'S:FFKLMN: Bad planar digi pointers') IF (LFAILR) CALL ERRLOG(322,'S:FFKLMN: Bad radial digi pointers') * Get the starting vector into the KF format CALL FKETOI(RW(INDCR(INFTUR,1,JTR)),SSTART,CSTART) CALL FKNORM(SSTART,IFAIL) * Initial veto for bad tracks IF (FFRJCT(SSTART(3))) RETURN * Find the true track IF (LTRUTH) CALL FFHUNT(JDIGP,JDIGR,JMAX) * Histogram the patrec efficiencies & CALL FFCHEK(JDIGP,JDIGR,JMAX) * Increment track number * Corrections for real data only * Event T0 CALL FFEVT0(DEVT0,ZNOM,VXYZ) CALL UCOPY(SSTART,SS,10) CALL FFTRF(DZ,ZTRAN,SS,STRAN,BZ) * Track angle, time-of-flight, propagation time CALL FFCORR(JPL,STRAN,ZNOM,VXYZ,DEVT0,BZ,DCORR) CALL UCOPY(STRAN,SS,10) * Set up the starting vector CALL FFSTART(SSTART,CSTART,ZSTART) * LFIRST and LTRUE can be in /H1WORK/, so must be set here * Fill the TRUE array if needed IF (JMAX.GT.0) CALL FFTRUE(JMAX) * Kalman filter CALL FKLFTR(IFAIL) CALL FKLFIT(IFAIL) CALL ERRLOG(324,'S:FFKLMN: Fatal error in track fit') * Add to the output banks CALL FFOUT(JTR,NPS,NRS) * Analyse the results IF (IHFK.GT.0 .AND. NPS.GT.1) CALL FKANAL(0,RES,CHISQ,NPS,NRS) CALL HCDIR('//PAWC/'//CFDBG,' ') *