*-- Author : R. Henderson
SUBROUTINE FPSGRF
**: FPSGRF.......SM. Bug fix. Protect against small Chisq for PROB.
**----------------------------------------------------------------------
C---------------------------------------------------------------
C
C routine checks the connectivity of the found segments
C and returns an optimized non-connected solution in MASKSG
C 0 = accept segment , -1 = reject segment
C
C---------------------------------------------------------------
C---
*KEEP,FPPRAM.
C
C--- MAXSEG is maximum number of segments per supermodule
C--- MAXCON is maximum number of amibiguous segments associatable with
C--- one segment
C--- LIMSTO is maximum number of 2 cluster planes intersections to be
C--- stored per supermodule
C--- MSEGLM is maximum number of clusters that can be found before
C--- connectivity considered
C--- MAXCLU is maximum number of clusters that can be found after
C--- forming non-connected set MUST BE 50 IF RUN WITH OLD RCW
C--- (cluster = 3/4 digits found in a straight line in one
C--- 4-wire orientation)
C
C---
*KEND.
C---
*KEEP,FPLSEG.
C---
C---
*KEND.
C---
*KEEP,FPCLUS.
C---
*KEND.
C---
*KEEP,FPH1WRK.
C-- *KEEP,FPCSEG.
C---
C---
C-- *KEEP,FPDIGI.
C---
C-- *KEEP,FPDGI.
C---
C-- *KEEP,FPSTID.
C---
C-- *interface to real data
C---.
*KEND.
C---
C---
C---
C--- Local variables
C---
C--- ISGTAB (I,J) = segment number of Jth node connected to Ith node
C--- KSGTAB (I) = number of segments connected to Ith node
C--- MXLIS = list of nodes with maximum connectivity
C--- CHLIS = weight asscociated with each node listed in MXLIS
C
C
C--- input
C
C ASEGIN(SEG,SUPERMODULE) = chisquare of segment
C
C ISEGIN(1,SEG,SUPERMODULE) = 1st cluster-plane for segment
C ISEGIN(2,SEG,SUPERMODULE) = 2nd cluster-plane for segment
C ISEGIN(3,SEG,SUPERMODULE) = 3rd cluster-plane for segment
C ISEGIN(4,SEG,SUPERMODULE) = number of degree of freedom for segmen
C
C NFSEG(SUPERMODULE) = number of found segments per supermodu
C
C--- output
C
C MASKSG(SEG,SUPERMODULE) = 0 if allowed
C = -1 if lost
C
C
C--- loop over supermodules
C
C
C--- zero ksgtab
C
C
C--- construct connectivity table
C
C
C--- 1st loop over segments
C
C
C--- remove if segs the same
C
C
C--- search to see if any cluster planes in common
C
C
C--- found one in common , increment counter , store connection
C
C
C--- trap out of bounds. has been known to happen in MC!
C
C
C--- connection found skip furthur search of KSEG segment
C
C
C
C
C--- Start to remove connectivity
C
C
C--- Find the highest multiplicity
C
CALL VFLOAT(KSGTAB,FSGTAB,NFSEG(ISM))
C
C--- Loop over all segments and find those with same multiplicity
C
C IF(KSGTAB(ISEG) .LT. (IVMXSG-2)
C
C--- Find which segment contributes most to chisquare
C
C
C--- Find probablility of link segments
C
C
C--- Store probability of links less own prob
C
* Fix for v.small chisq...
* CHLIS(IMX) = PROB(CHISUM,NDFSUM) -
* 1 PROB(ASEGIN(MXSEG,ISM),ISEGIN(4,MXSEG,ISM))
C
C
C--- Find the segment with largest positive contribution
C
C
C--- Remove all reference to this segment from connectivity table
C
C
C
C--- Repeat proceedure on remaining nodes
C
C
C
C--- No connectivity remaining
C
C---
C---
C
C--- Write output bank
C
C
C--- Something horrible has happened - kill event!
C
CALL ERRLOG(212,'W:FPSGRF: Too much confusion! Planar data off')
*