*-- Author : I.O.Skillicorn SUBROUTINE FTMERG **: FTMERG 30907 RP. Farm changes. **---------------------------------------------------------------------- * * Merge lists of Radial-based and Planar-based tracks * resolving conflicts. * - Planar-based tracks win disputed segments * *** - Radial-based tracks only accepted if verified by at * at least one planar. * *** - Keep radial only tracks if 1 or 2 module. * *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) * * *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...) *KEEP,FRH3FT. * Common for RETRAC results (SJM) COMMON/FRH3FT/ IRN(36,MAXTRK),SDN(36,MAXTRK), + IRP(36,MAXTRK),SDP(36,MAXTRK), + IG2,IGTTRK(MAXTRK), + CHISQ(MAXTRK),NUMDF(MAXTRK), + FITX(MAXTRK),FITY(MAXTRK),FITZ(MAXTRK), + FITTH(MAXTRK),FITPH(MAXTRK), + FITCU(MAXTRK),FTCOV(15,MAXTRK) *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 PARAMETER (MAXSEG = 200) PARAMETER (MAXCON = 100) PARAMETER (LIMSTO = 5000) PARAMETER (MSEGLM = 150) PARAMETER (MAXCLU = 50) C--- *KEEP,FPLSEG. C--- COMMON /FPLSEG / PW(12,MAXSEG,3) , PWC(12,MAXSEG,3) , 1 PRCHI(MAXSEG,3) , NFSEG(3) , 2 XYDXY(4,MAXSEG,3) , EXYDXY(4,4,MAXSEG,3) , 3 ZSEG(2,MAXSEG,3) , 4 ASEGIN(MAXSEG,3) , ISEGIN(5,MAXSEG,3) , 5 MASKSG(MAXSEG,3) , IDGISG(12,MAXSEG,3) C--- *KEEP,FPTFLG. COMMON/FPTFLG/IPLAR, NIT, IREZ, LUNFP, NPLMAX *KEEP,FPTPAR. COMMON/FPTPAR/PCUT1, PCUT2, PCUT3, CXP, CYP, + DRPCT1, DRPCT2, DRPCT3, + DRCUT1, DRCUT2, DRCUT3 *KEEP,FDIFLG. COMMON/LDIAG/IDIAG,IDIAG2,MAXPRT,IDOHIS,PMCUT *KEND. * POINTERS TO RADIAL SEGMENTS FORMING TRACKS COMMON /FLINK3/LNK3(MAXTRK,3) * COMMON FOR IOS PLANAR LINK COMMON/FTPS3/NS(3),SPAR(4,50,3),IPT(12,50,3),IPLA(12,50,3), 1 SGN(12,50,3),YYS(12,50,3),YYF(12,50,3) * COMMON FOR PLANAR FOUND TRACKS COMMON/FTPPBK/NPP,IPP(36,100),CHPP(100),LP(3,100) COMMON/FTPPBS/SPP(36,100) COMMON/FPPFIT/PSSS(100),PISS(100),RSSS(100),RISS(100) COMMON/FPLNK/KTIP(3,50),LPP(3,100) C COMMON FOR RADIALS ASSOCIATED WITH PLANAR TRACKS COMMON/FTRRBK/IRR(36,MAXTRK),SRR(36,MAXTRK),LRR(3,MAXTRK) C PLANAR SEGMENTS ASSOCIATED WITH RADIALS C ISGG POINTS TO ROB'S SEGMENT BANKS COMMON /FPSEG1/ ISGG(3,MAXTRK) COMMON /FPSEG2/ ISGP(3,MAXTRK),IUZP(MAXSEG,3),IUZR(MAXTRK,3) COMMON /FPSEG3/ ISGR(3,MAXSEG) C RADIAL REJECT , UNUSED , RADIAL VERIFIED BY PLANAR COMMON/FTRFLG/ IBRR(MAXTRK),IBPP(100),IVRR(MAXTRK) DIMENSION PSEG(4) PARAMETER (PI2=6.2831853) DATA ISTART/0/ CALL VZERO(IUZP,3*MAXSEG) CALL VZERO(IUZR,3*MAXTRK) CALL VZERO(IBRR,IG) CALL VZERO(IVRR,IG) CALL VZERO(IBPP,NPP) DO 100 I=1,IG DO 200 J=1,NPP DO 110 II=1,3 C CHECK COMMON RADIAL SEGMENT IF(LNK3(I,II).EQ.LRR(II,J).AND.LRR(II,J).NE.0)THEN CALL SHS(713,0,2.01) GOTO 250 ENDIF 110 CONTINUE DO 120 II=1,3 C CHECK COMMON PLANAR SEGMENT IF(ISGG(II,I).EQ.LPP(II,J).AND.LPP(II,J).NE.0)THEN CALL SHS(713,0,3.01) GOTO 250 ENDIF 120 CONTINUE GOTO200 250 CONTINUE C HERE WE HAVE EITHER RADIAL OR PLANAR SEGMENT IN COMMON C BETWEEN RADIAL AND PLANAR FOUND TRACKS C MARK RADIAL LINKED TRACK AS BAD C NEXT LINE COUNTS RADIALS FOUND MORE THAN ONCE BY PLANARS IF(IBRR(I).EQ.1)CALL SHS(713,0,4.51) IBRR(I)=1 CALL SHS(713,0,4.01) 200 CONTINUE 100 CONTINUE *-----Debug--------------------------------------------------- * WRITE(*,*)' ***FTMERG***' * WRITE(*,*)IG,' RADIAL TRACKS FTADD' * * Mark planar and radial segments on verified radial tracks * used. Label the verified radial tracks in the IG list * Kill off bad links... DO 300 I=1,IG CALL SHS(711,0,5.01) IF(IBRR(I).EQ.0)THEN IF((ISGG(1,I)+ISGG(2,I)+ISGG(3,I)).NE.0)THEN C RADIAL TRACK VERIFIED BY PLANAR SEGMENT - GOOD TRACK IVRR(I)=1 IF(LNK3(I,1).NE.0)IUZR(LNK3(I,1),1)=1 IF(LNK3(I,2).NE.0)IUZR(LNK3(I,2),2)=1 IF(LNK3(I,3).NE.0)IUZR(LNK3(I,3),3)=1 IF(ISGG(1,I).NE.0)IUZP(ISGG(1,I),1)=1 IF(ISGG(2,I).NE.0)IUZP(ISGG(2,I),2)=1 IF(ISGG(3,I).NE.0)IUZP(ISGG(3,I),3)=1 *-----Debug--------------------------------------------------- * Write(6,*) ' Verified Radial-based track:-' * PRINT 1001,I,(IRN(K,I),K=1,36),LNK3(I,1),LNK3(I,2),LNK3(I,3) * PRINT 1001,I,(IRP(K,I),K=1,36),ISGG(1,I),ISGG(2,I),ISGG(3,I) CALL SHS(711,0,2.01) ELSE C UNVERIFIED - SEEN RADIALS ONLY- ? *-----Debug--------------------------------------------------- * Write(6,*) ' Unverified Radial-based track:-' * PRINT 1001,I,(IRN(K,I),K=1,36),LNK3(I,1),LNK3(I,2),LNK3(I,3) * PRINT 1001,I,(IRP(K,I),K=1,36),ISGG(1,I),ISGG(2,I),ISGG(3,I) *1001 FORMAT(' RR',I2,3X,12I2,3X,12I2,3X,12I2,2X,3I2) *1002 FORMAT(' RP',I2,3X,12I2,3X,12I2,3X,12I2,2X,3I2) CALL SHS(711,0,3.01) * 'Verify' this track also. IVRR(I)=1 * This assumes Radial tracks are at least two module... IF(LNK3(I,1).NE.0)IUZR(LNK3(I,1),1)=1 IF(LNK3(I,2).NE.0)IUZR(LNK3(I,2),2)=1 IF(LNK3(I,3).NE.0)IUZR(LNK3(I,3),3)=1 * LNK3(I,1) = 0 * LNK3(I,2) = 0 * LNK3(I,3) = 0 ISGG(1,I) = 0 ISGG(2,I) = 0 ISGG(3,I) = 0 ENDIF ELSE LNK3(I,1) = 0 LNK3(I,2) = 0 LNK3(I,3) = 0 ISGG(1,I) = 0 ISGG(2,I) = 0 ISGG(3,I) = 0 C RADIAL BASED TRACK HAS SEGMENT IN COMMON WITH PLANAR BASED TRACK C SHARE PLANAR SEGMENT WITH PLANAR TRACK - REJECT - IBRR=1 C SHARE RADIAL SEGMENT WITH PLANAR TRACK - REJECT- IBRR=1 * PRINT 1005,I,(IRN(K,I),K=1,36),LNK3(I,1),LNK3(I,2),LNK3(I,3) * PRINT 1006,I,(IRP(K,I),K=1,36),ISGG(1,I),ISGG(2,I),ISGG(3,I) CALL SHS(711,0,4.01) ENDIF 300 CONTINUE CC WRITE(*,*)NPP,' PLANAR TRACKS ' DO 310 I=1,NPP IF( LRR(1,I).NE.0)IUZR( LRR(1,I),1)=1 IF( LRR(2,I).NE.0)IUZR( LRR(2,I),2)=1 IF( LRR(3,I).NE.0)IUZR( LRR(3,I),3)=1 IF( LPP(1,I).NE.0)IUZP( LPP(1,I),1)=1 IF( LPP(2,I).NE.0)IUZP( LPP(2,I),2)=1 IF( LPP(3,I).NE.0)IUZP( LPP(3,I),3)=1 C TRACKS BASED ON LINKED PLANAR SEGMENTS - ACCEPT AS GOOD * PRINT 1004,I,(IRR(K,I),K=1,36),LRR(1,I),LRR(2,I),LRR(3,I) * PRINT 1003,I,(IPP(K,I),K=1,36),LPP(1,I),LPP(2,I),LPP(3,I) CALL SHS(711,0,1.01) IF(LRR(1,I).NE.0.OR.LRR(2,I).NE.0.OR.LRR(3,I).NE.0)THEN C PLANAR VERIFIED BY RADIAL CALL SHS(713,0,1.01) ENDIF C FOR COMPLETENESS ADD DRIFT SIGNS FOR PLANAR AND RADIALS DO 311 IM=1,3 IF(LPP(IM,I).NE.0)THEN IP=LPP(IM,I) DO 312 II=1,12 IOSP=IDGISG(II,IP,IM) SPP(II+(IM-1)*12,I)=SIGN(1.0,FLOAT(IOSP)) 312 CONTINUE ENDIF IF(LRR(IM,I).NE.0)THEN IP=LRR(IM,I) ENDIF 311 CONTINUE C 310 CONTINUE RETURN END *