FPDG31 COMMENTS
*-- Author :  R. Henderson
      SUBROUTINE FPDG31(IP)
**: FPDG31 40000 RH. New steering parameter.                                                                  
*------------------------------------------------------------------                                           
**: FPDG31 30907 RH. Bug fix in cluster finding.                                                              
C------------------------------------------------------------------                                           
C                                                                                                             
C---  This routine finds cluters from 3 digitizings                                                           
C---  the missing digit on wire 2 or 3                                                                        
C---  This routine should always be called from within FPDG4                                                  
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,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---                                                                                                          
*KEEP,FPCLUS.                                                                                                 
C---                                                                                                          
*KEND.                                                                                                        
C---                                                                                                          
*KEEP,FPLGEO.                                                                                                 
C---                                                                                                          
C---                                                                                                          
*KEND.                                                                                                        
C---                                                                                                          
C---                                                                                                          
C---                                                                                                          
C---                                                                                                          
C-------------------------------------------------------------------                                          
C                     DIGITS ANALYSIS                                                                         
C                                                                                                             
C   The following arrays are used in the remainder of this routine                                            
C                                                                                                             
C       drsto(drift,wire_in_orientation):                                                                     
C       This has both drift and reflection per orientation                                                    
C                                                                                                             
C       ndrsto(wire_in_orientation):                                                                          
C       Number of drifts + reflections on wire (Naughty)                                                      
C                                                                                                             
C       drmask(drift,wire_in_orientation):                                                                    
C       1.0 If digit or reflection used                                                                       
C       0.0 If digit or reflection unused                                                                     
C                                                                                                             
C       idigst(wire_in_orientation,found_segment_candidate):                                                  
C       index of digitising associated with a particular                                                      
C       candidate segment for a particular wire                                                               
C                                                                                                             
C       nsgtab(candidate_segment):                                                                            
C       Number of candidate segments with which current segment                                               
C       shares digitizings                                                                                    
C                                                                                                             
C       segtab(candidate_segment,associated_ambiguous_segments):                                              
C       segment index ambiguous with current segment                                                          
C                                                                                                             
C-------------------------------------------------------------------                                          
C                                                                                                             
C---  tolerance for finding digitizings                                                                       
C                                                                                                             
C                                                                                                             
C---  define maximum slope to be found for segment                                                            
C                                                                                                             
C                                                                                                             
C---  Section to find 2d line segments                                                                        
C                                                                                                             
C---  loop over first and last wire in orientation                                                            
C---  but allow one of the intermediate points to be missing                                                  
C                                                                                                             
C                                                                                                             
C---  entry point for more relaxed segment search                                                             
C---  ifirst = 1 on first pass through                                                                        
C                                                                                                             
C                                                                                                             
C---  determine if dealing with a DIGIT IN A split cell                                                       
C                                                                                                             
C                                                                                                             
C---  On first pass filter out large slopes                                                                   
C                                                                                                             
C---                                                                                                          
C                                                                                                             
C---  use tolerance to find digitizings to form segments                                                      
C                                                                                                             
C                                                                                                             
C---  plane 2                                                                                                 
C                                                                                                             
C                                                                                                             
C---  store the digitizing per segment found                                                                  
C                                                                                                             
        CALL ERRLOG(204,'W:FPDG31: NSEG > MSEGLM')                                                     
C                                                                                                             
C---  plane 3                                                                                                 
C                                                                                                             
C                                                                                                             
C---  store the digitizing per segment found                                                                  
C                                                                                                             
        CALL ERRLOG(205,'W:FPDG31: NSEG > MSEGLM')                                                     
C                                                                                                             
C---  Now sort out which initial segments to keep                                                             
C                                                                                                             
C                                                                                                             
C---  Create SEGTAB showing interconnectivity                                                                 
C                                                                                                             
      CALL VZERO(NSGTAB,MSEGLM)                                                                        
C                                                                                                             
C---  loop over all segments                                                                                  
C                                                                                                             
C                                                                                                             
C---  loop over remaining segments                                                                            
C                                                                                                             
C                                                                                                             
C---  comparison loop over each wire in turn                                                                  
C                                                                                                             
C                                                                                                             
C---  has the same wire the same digit                                                                        
C                                                                                                             
C                                                                                                             
C--- remove nodes greater than or equal to 3                                                                  
C                                                                                                             
       CALL VFLOAT(NSGTAB,ASGTAB,NSEG)                                                                 
C                                                                                                             
C--- greater than 2.0 so remove by setting nsgtab = -1.0                                                      
C                                                                                                             
C                                                                                                             
C--- Now remove any reference to this node in the remaining nodes                                             
C                                                                                                             
C                                                                                                             
C---  Now try to find loops and angles and eliminate                                                          
C                                                                                                             
C                                                                                                             
C---  Find first candidate with 2 links                                                                       
C                                                                                                             
C                                                                                                             
C---  Now trace its path                                                                                      
C                                                                                                             
C                                                                                                             
C---  Entry point for step along chain                                                                        
C                                                                                                             
C                                                                                                             
C---  Test if path at end                                                                                     
C                                                                                                             
C                                                                                                             
C---  Skip link if pointing back                                                                              
C                                                                                                             
C                                                                                                             
C---  Store next element of chain                                                                             
C                                                                                                             
C                                                                                                             
C---  Test if loop complete                                                                                   
C                                                                                                             
C                                                                                                             
C---  Points to next element in chain                                                                         
C                                                                                                             
C                                                                                                             
C---  End of branch one                                                                                       
C                                                                                                             
C                                                                                                             
C---  This cannot be a loop so kill off node                                                                  
C                                                                                                             
C                                                                                                             
C--- Now remove any reference to this node in the remaining nodes                                             
C                                                                                                             
C                                                                                                             
C---  Now continue on node loop                                                                               
C                                                                                                             
C                                                                                                             
C---  Loop complete                                                                                           
C                                                                                                             
C                                                                                                             
C---  Perform fits and eliminate all but one node in loop                                                     
C                                                                                                             
       CALL FPCFIT(IP,Y,W,SLOPE,ZERO,COVSLZ,CHISQ,PBCHI)
C                                                                                                             
C---  Keep only highest probability iff prob gt 10**-5                                                        
C                                                                                                             
C                                                                                                             
C---  now loop over segments and remove all but the saved                                                     
C                                                                                                             
C                                                                                                             
C--- Now remove any reference to this node in the remaining nodes                                             
C                                                                                                             
C                                                                                                             
C                                                                                                             
C                                                                                                             
C--- now remove any pairs by fitting                                                                          
C                                                                                                             
C                                                                                                             
C---  Found a pair so find partner                                                                            
C                                                                                                             
C                                                                                                             
C---  fit the first possiblity                                                                                
C                                                                                                             
       CALL FPCFIT(IP,Y,W,SLOPE,ZERO,COVSLZ,CHISQ1,PBCHI1)
C                                                                                                             
C---  Fit the second possiblity                                                                               
C                                                                                                             
       CALL FPCFIT(IP,Y,W,SLOPE,ZERO,COVSLZ,CHISQ2,PBCHI2)
C                                                                                                             
C---  Now remove the smaller probability segment                                                              
C                                                                                                             
C                                                                                                             
C--- Now remove any reference to this node in the remaining nodes                                             
C                                                                                                             
C                                                                                                             
C---  ANALYSE remaining segments                                                                              
C                                                                                                             
C                                                                                                             
C---  fit remaining segments                                                                                  
C                                                                                                             
       CALL FPCFIT(IP,Y,W,SLOPE,ZERO,COVSLZ,CHISQ,PBCHI)
C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                                         
C                                                                                                             
C---  find the absolute coordinate normal current wire orientation                                            
C                                                                                                             
C                                                                                                             
C---  find which orientation plane (1-9) is current                                                           
C                                                                                                             
C                                                                                                             
C---  find fitted 'y' position at begining and end of 4 wire set                                              
C---  fdrsta and fdrend respectively                                                                          
C                                                                                                             
C                                                                                                             
C---  Transform from orientation drift coordinates to global coordinates                                      
C---  assuming that drift x coordinate is zero                                                                
C                                                                                                             
*      XREAL1=   SIN( -TP(IPLANE) ) * FDRSTA                                                                  
*      YREAL1=   COS( -TP(IPLANE) ) * FDRSTA                                                                  
*      XREAL2=   SIN( -TP(IPLANE) ) * FDREND                                                                  
*      YREAL2=   COS( -TP(IPLANE) ) * FDREND                                                                  
C                                                                                                             
C---  Fill track cluster banks and banks counter                                                              
C                                                                                                             
C                                                                                                             
C---  Increment cluster counter per plane                                                                     
C                                                                                                             
        CALL ERRLOG(206,'W:FPDG31: NTC(IPLANE) > MAXCLU')                                              
C                                                                                                             
C---  store toC                                                                                               
C                                                                                                             
C                                                                                                             
C---  store the digitisings associated with plane/track for final                                             
C     fit                                                                                                     
C                                                                                                             
C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                                               
C                                                                                                             
C---  Now plot unused digitisizings                                                                           
C                                                                                                             
C                                                                                                             
C---  Set drmask to 1.0 for used digits                                                                       
C                                                                                                             
C                                                                                                             
C---  Now plot and count them                                                                                 
C                                                                                                             
C                                                                                                             
C---  If first pass now loop back with 2*tolerance and 3*maxang                                               
C                                                                                                             
*