*-- Author : I. O. Skillicorn 16/11/92 SUBROUTINE FPPJN3 **: FPPJN3 40000 IS. New linking code. **---------------------------------------------------------------------- **: FPPJN3 30907 RP. Farm changes. **---------------------------------------------------------------------- C JOIN 3 PLANAR MODULES C 1MM ERRORS USED IN CHI . *KEEP,FRDIMS. *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--- *KEEP,FH1WORK. * Planar geometry * * Radial geometry * * Radial data... * * Planar Data * * Pointers into DIGI bank for IOS labelled hits * * Track segment data * * Fit data * * *KEEP,FPTVTX. **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,FPFVTX. * *KEEP,FPJPAR. *KEND. * RRCUT=5.0 C PLANAR SEGMENTS ARE JOINED BY PROJECTING THE SEGMENTS TO A C PLANE MIDWAY BETWEEN THE SEGMENTS. THE DISTANCE**2 BETWEEN C THE PROJECTIONS,RR, ON THIS PLANE IS USED AS A MEASURE OF C THE GOODNESS OF LINKAGE. IF RR IS LESS THAN RCUT THE C LINK IS ACCEPTED. IF (ABS(Y1M-Y2M).LT.2.0) CALL SHS(907,0,X1M-X2M) IF (ABS(X1M-X2M).LT.2.0) CALL SHS(908,0,Y1M-Y2M) CALL SHS(904,0,RR) CALL SHS(905,0,RR) C POTENTIAL LINK - CALCULATE CHI BETWEEN PARABOLA AND C FITTED LINE SEGMENTS C PARABOLA IS THRU CENTRE OF SEGMENTS C DRIFT COORDS FOR PLANARS XP=FPARAB(ZA,X1,X2,X3,Z1,Z2,Z3) * CHI=CHI+(XF-XP)**2/(0.10)**2 YP=FPARAB(ZA,Y1,Y2,Y3,Z1,Z2,Z3) * CHI=CHI+(YF-YP)**2/(0.10)**2 ******ADDED IOS 16/11/93************************************** C CALCULATE MEAN PHI FOR PARABOLA ******END ADD 16/11/93******************************************* C FIT PHI-Z CALL FTLFTW(XX,YY,WP,IC,0,2,PS,PI,D1,D2,D3,D4) C FIT R-Z CALL FTLFTW(XX,ZZ,WPP,IC,0,2,RS,RI,D1,D2,D3,D4) C PRINT1002,JJ,(YY(JJ)-PS*XX(JJ)-PI)**2*WP(JJ)**2,YY(JJ),DIFF CALL SHS(500,0,CHIP) C CHI FOR DRIFT RELATIVE TO PARABOLAE IN PHI-Z , R-Z PHI=FPARAB(ZED,PPP(1),PPP(2),PPP(3), RRP=FPARAB(ZED,RRR(1),RRR(2),RRR(3), CALL SHS(571,0,CHID) * Remove Links with poor Chisq... 18/11/93 * * II=LINK C PRINT 1001,II,LNK(1,II),LNK(2,II),LNK(3,II),CHIL(II) C CALCULATE A CURVATURE IN THE X,Y PLANE HENCE MOMENTUM C SS=SAGITTA SQUARED USE R=L**2/(8*S) C WORKS OK 1 GEV AND ABOVE. BELOW OVERESTIMATES P DUE TO C WRONG SLOPE PROBABLY * SS=(X2-0.5*(X1+X3))**2+(Y2-0.5*(Y1+Y3))**2 * RAD=((X3-X1)**2+(Y3-Y1)**2)/(8.0*SQRT(SS)) * TANT=(SQRT(X2**2+Y2**2)-SQRT(X1**2+Y1**2))/(Z2-Z1) * THET=ATAN(TANT) * TH(LINK)=THET * RAD=RAD/SIN(THET) * PP=12.*0.0002998*RAD * PH1=ATAN2(Y1,X1) * PH2=ATAN2(Y2,X2) * IF(PH1.LT.0.0)PH1=PH1+PI2 * IF(PH2.LT.0.0)PH2=PH2+PI2 * SIGN=1.0 * DIFF=PH2-PH1 * IF(DIFF.LT.-3.14)DIFF=DIFF+PI2 * IF(DIFF.GT.3.14)DIFF=DIFF-PI2 * IF(DIFF.GT.0.)SIGN=-1. * PP=PP*SIGN C IF(ABS(PP).LT.1.0)THEN C WRITE(*,*)' PP XYZ 123 ',PP ,X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3 C WRITE(*,*)' SS LL**2 ',SQRT(SS),(X3-X1)**2+(Y3-Y1)**2 C ENDIF * PPP(LINK)=PP C NEW COMPARE SECTION C SELECT BEST * WRITE(*,*)' K ,CHI ',K,CH(K),LNK(1,K),LNK(2,K),LNK(3,K) * WRITE(*,*)' KB,CHIB ',KB,CHB C COMPARE BEST WITH REMAINDER C REMOVE LINK * WRITE(*,*)' REMOVE ',K C COMPARE FINISHED , MARK BEST SEGMENT USED C RESET CHI WHEN COMPARE FINISHED C C C C SET USED FLAG C PRINT 1000,I,LNK(1,I),LNK(2,I),LNK(3,I),CHIL(I) C PRINT 1000,I,(IPT(III,L1,1),III=1,12) C 1,(IPT(III,L2,2),III=1,12) C 1,(IPT(III,L3,3),III=1,12),CHIL(I) CALL SHS(575,0,PROD ) CALL SHS(550,0,2.001) CALL SHS(550,0,10.001) CIOS CALL PLAFIT(TH) *