*-- Author : I.O. Skillicorn
SUBROUTINE FTLINK
C ORGANISE LINKING OF RADIAL MODULES
C AUTHOR I.O.SKILLICORN
C 21/5/91 REDUCE SIZE
* SUNDRY ARRAY DIMENSIONS...
*KEEP,FRDIMS.
PARAMETER (MAXHTS=200)
PARAMETER (NUMWPL=36)
PARAMETER (MAXTRK=200)
PARAMETER (MXTTRK=900)
PARAMETER (MAXTR3=200)
PARAMETER (MAXHPW=2)
PARAMETER (MAXDIG=2000)
PARAMETER (NUMRWR=1727)
PARAMETER (NUMPWR=1151)
*KEEP,FH1WORK.
COMMON/FGMIOS/
* Planar geometry
+ ZPP(140),C(140),S(140),ITYPE(140),WZERO(140),WSPACE,
*
* Radial geometry
+ ZP(36),PHW(36),WS(36)
*
COMMON/H1WORK/
* Radial data...
+ WW(MAXHTS,36),DRI(MAXHTS,36),RM(MAXHTS,36),
+ NDP(36), NW(MAXHTS,36), DWS(MAXHTS,36),
*
* Planar Data
+ NDPW(NUMWPL),DW(MAXHTS,NUMWPL),
+ DRIW(MAXHTS,NUMWPL),NDW(MAXHTS,NUMWPL),
+ WWP(MAXHTS,NUMWPL),
+ IPHOLE(MAXHTS,NUMWPL),
*
* Pointers into DIGI bank for IOS labelled hits
+ IPFRRE(MAXHTS,36),IPFRPE(MAXHTS,36),NFRRE,NFRPE,
+ IRPIOS(MAXDIG,2), IPPIOS(MAXDIG,2),
*
* Track segment data
+ NTRAKS(3),IRPT(12,MAXTRK,3),SDRFT(12,MAXTRK,3),
*
* Fit data
+ PCOSL(MAXTRK,3),PSINL(MAXTRK,3),PHZL(MAXTRK,3),
+ DPCOSL(MAXTRK,3),DPSINL(MAXTRK,3),
+ DPHZL(MAXTRK,3),CHSQ(MAXTRK,3),RZI(MAXTRK,3),
+ RPCOSG(MAXTRK),RPSING(MAXTRK),
+ PHZG(MAXTRK),CC(3,MAXTRK),ZIG(MAXTRK),
+ IRADG(36,MAXTRK),PHIG(36,MAXTRK),
+ IG,SDRADG(36,MAXTRK),
+ R1,Z1,RFIT(MAXTRK,3),
+ CHG(MAXTRK),
+ PPA(MAXTRK,3), ZZA(MAXTRK,3),
+ GPA(MAXTRK,3),GZA(MAXTRK,3)
*
*
*KEND.
* VERTEX INFO...
*KEEP,FPTVTX.
COMMON/VERTVV/ZV ,XVV,YVV
**the common/VERTEX/ becomes /VERTVV/ (in analogy to /VERTFF/) on the
** 17/6/91, since it is in conflict with the VERTEX module (g.bernardi)
** (note that all these common names should start by F in this deck...)
*KEND.
*
*
* LOCAL ARRAYS...
COMMON /FLINK3/LNK3(MAXTRK,3)
*************************************************************
C COMMON/FTWSEG/NIG,NNPTS(MAXTRK),NIRADG(36,MAXTRK),
C 1SDRADN(36,MAXTRK)
*************************************************************
DIMENSION ZI12(MAXTRK)
DIMENSION ZI13(MAXTRK)
DIMENSION ZI23(MAXTRK)
DIMENSION ZI123(MAXTR3)
DIMENSION TRI(MAXTRK),TPA(MAXTRK,3)
DIMENSION TZA(MAXTRK,3),TCH(MAXTRK)
DIMENSION CF(MAXTR3,3),IUSED(MAXTR3,3)
DIMENSION INP(MAXTRK)
DIMENSION RPC(MAXTRK),PH(MAXTRK),RPS(MAXTRK)
DIMENSION NPTS(MAXTRK)
DIMENSION LL12(MAXTRK,2),RPC12(MAXTRK),RPS12(MAXTRK)
DIMENSION PH12(MAXTRK),CH12(MAXTRK)
C DIMENSION IP12(36,MAXTRK),SD12(36,MAXTRK)
DIMENSION LL13(MAXTRK,2),RPC13(MAXTRK)
DIMENSION RPS13(MAXTRK),PH13(MAXTRK),CH13(MAXTRK)
C DIMENSION IP13(36,MAXTRK),SD13(36,MAXTRK)
DIMENSION LL23(MAXTRK,2),RPC23(MAXTRK)
DIMENSION RPS23(MAXTRK),PH23(MAXTRK),CH23(MAXTRK)
C DIMENSION IP23(36,MAXTRK),SD23(36,MAXTRK)
DIMENSION LL123(MAXTR3,3),RPC123(MAXTR3)
DIMENSION RPS123(MAXTR3),PH123(MAXTR3)
DIMENSION CH123(MAXTR3)
PI2=6.2831853
IG=0
N12=0
N13=0
N23=0
C =1 FOR UNUSED SEGMENTS
NUN=0
DO 2010 I=1,MAXTR3
DO 2010 J=1,3
IUSED(I,J)=0
2010 CONTINUE
DO 2103 J=1,MAXTRK
LNK3(J,1)=0
LNK3(J,2)=0
LNK3(J,3)=0
GPA(J,1)=0.
GZA(J,1)=0.
NPTS(J)=0
C NNPTS(J)=0
DO 2102 I=1,36
SDRADG(I,J)=0
IRADG(I,J)=0
C NIRADG(I,J)=0
2102 CONTINUE
2103 CONTINUE
C JOIN TRACK SEGMENTS
CALL FTJN3(CF,IUSED,N123,LL123,RPC123,RPS123,PH123,
1 CH123, ZI123)
CALL FTJN23(CF,IUSED,N23,LL23,RPC23,RPS23,PH23,
1 CH23, ZI23)
CALL FTJN12(CF,IUSED,N12,LL12,RPC12,RPS12,PH12,
1 CH12, ZI12)
CALL FTJN13(CF,IUSED,N13,LL13,RPC13,RPS13,PH13,
1 CH13, ZI13)
C FILL BANK WITH TRACKS
IG=0
IF(N123.NE.0)THEN
DO 100 I=1,N123
IF(LL123(I,1).EQ.0)GOTO100
IG=IG+1
IF(IG.GT.MAXTRK) IG=MAXTRK
RPCOSG(IG)=RPC123(I)
RPSING(IG)=RPS123(I)
PHZG(IG)=PH123(I)
ZIG(IG)=ZI123(I)
CHG(IG)=CH123(I)
GZA(IG,1)=ZZA(I,1)
GPA(IG,1)=PPA(I,1)
GZA(IG,2)=ZZA(I,2)
GPA(IG,2)=PPA(I,2)
GZA(IG,3)=ZZA(I,3)
GPA(IG,3)=PPA(I,3)
C STORE LINK POINTERS
LNK3(IG,1)=LL123(I,1)
LNK3(IG,2)=LL123(I,2)
LNK3(IG,3)=LL123(I,3)
C WRITE(*,*)' 123 ',IG,RPCOSG(IG),RPSING(IG)
C DO105 N=1,36
C IF(IP123(N,I).GT.0)NPTS(IG)=NPTS(IG)+1
C IRADG(N,IG)=IP123(N,I)
C SDRADG(N,IG)=SD123(N,I)
C105 CONTINUE
100 CONTINUE
ENDIF
IF(N23.NE.0)THEN
DO 110 I=1,N23
IF(LL23(I,1).EQ.0)GOTO110
IG=IG+1
IF(IG.GT.MAXTRK)IG=MAXTRK
RPCOSG(IG)=RPC23(I)
RPSING(IG)=RPS23(I)
PHZG(IG)=PH23(I)
ZIG(IG)=ZI23(I)
CHG(IG)=CH23(I)
C STORE LINK POINTERS
LNK3(IG,1)=0
LNK3(IG,2)=LL23(I,1)
LNK3(IG,3)=LL23(I,2)
C WRITE(*,*)' 23 ',IG,RPCOSG(IG),RPSING(IG)
C DO115 N=1,36
C IRADG(N,IG)=IP23(N,I)
C IF(IP23(N,I).GT.0)NPTS(IG)=NPTS(IG)+1
C SDRADG(N,IG)=SD23(N,I)
C115 CONTINUE
110 CONTINUE
ENDIF
IF(N12.NE.0)THEN
DO 120 I=1,N12
IF(LL12(I,1).EQ.0)GOTO120
IG=IG+1
IF(IG.GT.MAXTRK)IG=MAXTRK
RPCOSG(IG)=RPC12(I)
RPSING(IG)=RPS12(I)
PHZG(IG)=PH12(I)
ZIG(IG)=ZI12(I)
CHG(IG)=CH12(I)
C STORE LINK POINTERS
LNK3(IG,1)=LL12(I,1)
LNK3(IG,2)=LL12(I,2)
LNK3(IG,3)=0
C WRITE(*,*)' 12 ',IG,RPCOSG(IG),RPSING(IG)
C DO125 N=1,36
C IRADG(N,IG)=IP12(N,I)
C IF(IP12(N,I).GT.0)NPTS(IG)=NPTS(IG)+1
C SDRADG(N,IG)=SD12(N,I)
C125 CONTINUE
120 CONTINUE
ENDIF
IF(N13.NE.0)THEN
DO 130 I=1,N13
IF(LL13(I,1).EQ.0)GOTO130
IG=IG+1
IF(IG.GT.MAXTRK)IG=MAXTRK
RPCOSG(IG)=RPC13(I)
RPSING(IG)=RPS13(I)
PHZG(IG)=PH13(I)
ZIG(IG)=ZI13(I)
CHG(IG)=CH13(I)
C STORE LINK POINTERS
LNK3(IG,1)=LL13(I,1)
LNK3(IG,2)=0
LNK3(IG,3)=LL13(I,2)
C WRITE(*,*)' 1 3 ',IG,RPCOSG(IG),RPSING(IG)
C DO135 N=1,36
C IRADG(N,IG)=IP13(N,I)
C IF(IP13(N,I).GT.0)NPTS(IG)=NPTS(IG)+1
C SDRADG(N,IG)=SD13(N,I)
C135 CONTINUE
130 CONTINUE
ENDIF
IF(NUN.NE.0)THEN
C PICK UP UNUSED TRACK SEGMENTS
NIG=0
DO 200 II=1,3
NT=NTRAKS(II)
IF(NT.EQ.0)GOTO200
IF(II.EQ.1)NS=0
IF(II.EQ.2)NS=12
IF(II.EQ.3)NS=24
C DO 210 I=1,NT
C IF(IUSED(I,II).EQ.1)GOTO210
C NIG=NIG+1
C IG=IG+1
C**********************************************************************
C IF(NIG.GT.MAXTRK)THEN
C NIG=MAXTRK
C NNPTS(NIG)=0
C ENDIF
C IF(IG.GT.MAXTRK)THEN
C IG=MAXTRK
C NNPTS(IG)=0
C ENDIF
C**************************************************12/10/87************
C RPCOSG(IG)=PCOSL(I,II)
C RPSING(IG)=PSINL(I,II)
C PHZG(IG)=PHZL(I,II)
C ZIG(IG)=RZI(I,II)
C DO 215 N=1,12
C NN=NS+N
C NIRADG(NN,NIG)=IRPT(N,I,II)
C IF(IRPT(N,I,II).GT.0)NNPTS(NIG)=NNPTS(NIG)+1
C SDRADN(NN,NIG)=SDRFT(N,I,II)
C215 CONTINUE
C 210 CONTINUE
200 CONTINUE
ENDIF
*-----Debug--------------------------------------
* WRITE(6,'('' ***FTLINK>> '',I5, '' tracks found'')')IG
* DO 170 I=1,IG
* PRINT 2330,I,(IRADG(J,I),J=1,36)
*2330 FORMAT (' LINK ',1X,I3,1X,12I2,1X,12I2,1X,12I2,F6.2)
*170 CONTINUE
*GB DO 175 I=1,NIG
* PRINT 2330,I,(NIRADG(J,I),J=1,36)
*175 CONTINUE
*------------------------------------------------
RETURN
END
*