*-- Author : R. Henderson
SUBROUTINE FPFSEG(NSMLS)
**: FPFSEG.......SM. Add diagnostic histograms
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,FPLGEO.
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---
*KEEP,FPLSEG.
C---
C---
*KEND.
C---
C---
C DIMENSION IUCLU(50,9)
C---
C
C--- Set segment finding resolution cut
C
C
C--- loop over all combinations of planes formed by clusters
C--- in each orientation per supermodule and
C--- find any three which are coincident to within an
C--- arbitary tolerance acut
C
C
C--- Loop on supermodules
C
C
C--- Zero number of segments found
C
C
C--- skip if less than three present
C
C
C--- sort the segments according to their front face x values
C
C
C--- call cern library routine to return sorted list
C--- their ascending order is stored in ioxfv
C
1 CALL SORTZV(XFV , IOXFV , NSMLS(ISM) , 1 , 0 , 0)
C
C--- Loop on tracks
C
C
C--- Second Plane
C
C
C--- Test 1/2 front x and then y and rear x then y projections
C
* Call Hfill(403, DFX1, 0., 1.)
* Call Hfill(403, DFY1, 0., 1.)
* Call Hfill(403, DRX1, 0., 1.)
* Call Hfill(403, DRY1, 0., 1.)
C
C--- third plane
C
C
C--- Now test 1/3 x projection combinations
C
* Call Hfill(403, DFX2, 0., 1.)
C
C--- In an ordered sequence this next tests adds nothing
C
* Call Hfill(403, DFX1, 0., 1.)
C if (ABS( dfx3) .gt. acut ) go to 20
C
C--- Now test front 1/3 and 2/3 y projection combinations
C
* Call Hfill(403, DFY2, 0., 1.)
* Call Hfill(403, DFY3, 0., 1.)
C
C--- Now test the rear 1/3 combinations
C
* Call Hfill(403, DRX2, 0., 1.)
* Call Hfill(403, DRY2, 0., 1.)
C
C--- Now test the rear 2/3 combination
C
* Call Hfill(403, DRX3, 0., 1.)
* Call Hfill(403, DRY3, 0., 1.)
C
C--- ensure that candiate segments have track/plane in common
C
C
C--- ensure that track/plane assignments are self consistent
C
C--- The diagram desribes the functioning of the
C--- following block of code. The brackets represent a candidate
C--- line segment made from two candidate clusters each ( 1 | 2 ).
C--- That is id(1,1) etc.
C--- For the segment to be valid each of the three links must be in pla
C--- The code finds the two outermost links and remembers ipn1,ipn2
C--- imn1,imn2 which constrain the final link.
C---
C---
C--- ( | )
C--- / \
C--- / \
C--- / \
C--- / \
C--- ( |imn2)---(imn1| )
C--- ipn2 ipn1
C
C---
C---
C
C--- the first track/plane id(1,1) not equal to any of the others rejec
C
C
C--- the first track/plane link found
C
C
C--- now find second link for a(1,2)
C
C
C--- now test last remaining link
C
C
C--- Now test absolute lengths
C
C
C--- find the three yuv sets involved in this combination
C
C
C--- do direct lsq fit to yuv to give alternate parseg and errseg
C
CALL FPFYUV(ID1,ID2,ID3,ISM,PCHI,CHISQ,NDF,PARSGN,ERRSGN)
C
C--- end of loops
C
C
C--- Remove connectivity between segments
C
CALL FPSGRF
*