*-- Author : Stephen J. Maxfield / I.O.Skillicorn
SUBROUTINE FPTREZ(KTRK)
*
* Calculate residuals of Radial hits to PATREC tracks
* and make lookagrams of them.
*
*D Remove vertex shifts in segment residuals.
*
*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,FPTFLG.
COMMON/FPTFLG/IPLAR, NIT, IREZ, LUNFP, NPLMAX
*KEND.
*
COMMON/FERROR/ERRDR(MAXHTS, 36), ERRRM(MAXHTS, 36),
+ ERPDR(MAXHTS, 36), IERRF(MAXHTS, 36),
+ IERPF(MAXHTS, 36)
COMMON/CORRXY/CX1,CX2,CX3,CY1,CY2,CY3
DIMENSION IRT(36),REZ(36),DRFT(12),ZEDW(12)
DIMENSION RESID(12), RESR(12), RAD(12), DRFE(12), RMEAS(12)
PARAMETER(PHII=0.130899693)
PARAMETER(HPHII=PHII/2.)
PARAMETER(PI2=6.2831853)
IF(IREZ.GE.2) THEN
DO 1 I = 1, 36
* Offsets for radials...
IF(I.GE.1.AND.I.LE.12) THEN
CX=CX1
CY=CY1
ENDIF
IF(I.GE.13.AND.I.LE.24) THEN
CX=CX2
CY=CY2
ENDIF
IF(I.GE.25.AND.I.LE.36) THEN
CX=CX3
CY=CY3
ENDIF
PHI=RPCOSG(KTRK)*ZP(I)+PHZG(KTRK)
RR=RPSING(KTRK)*ZP(I)+ZIG(KTRK)
IF(PHI.LT.0.0)PHI=PHI+PI2
IF(PHI.GT.PI2)PHI=PHI-PI2
* Jiggery-pokery to get right wedge number...
XT=RR*COS(PHI)+XVV +CX
YT=RR*SIN(PHI)+YVV +CY
PHT=ATAN2(YT,XT)
IF(PHT.LT.0.0)PHT=PHT+PI2
IF(PHT.GT.PI2)PHT=PHT-PI2
NNW=(PHT+HPHII -PHW(I))/PHII
NNW=NNW+1
NP=NDP(I)
DMIN=1000.
DO 120 J=1,NP
IF(DRI(J,I).GT.900.)GOTO120
IF(ABS(NW(J,I)-NNW).GT.1)GOTO120
* Expected drift corrected for shifts...
DRE=RR*SIN(PHI-WW(J,I))
1 +(YVV+CY)*COS(WW(J,I))-(XVV+CX)*SIN(WW(J,I))
* Measured drifts...
DWW= DRI(J,I)+DWS(J,I)
DTT=-DRI(J,I)+DWS(J,I)
DDW=DWW-DRE
DDT=DTT-DRE
IF(ABS(DDW).LT.DMIN)THEN
DMIN=ABS(DDW)
DDD=DDW
JMIN=J
ENDIF
IF(ABS(DDT).LT.DMIN)THEN
DMIN=ABS(DDT)
JMIN=J
DDD=DDT
ENDIF
120 CONTINUE
IRT(I)=0
REZ(I)=10.
IF(DMIN.LT.5.0)THEN
IRT(I)=JMIN
REZ(I)=DDD/0.0150
ENDIF
IF(I.GE.1.AND.I.LE.12.AND.IRT(I).NE.0)THEN
L=L+1
IF(ABS(REZ(I)).LT.5.0) THEN
CALL SHS(116,0,REZ(I))
CALL SHS(119,0,REZ(I))
ENDIF
ENDIF
IF(I.GE.13.AND.I.LE.24.AND.IRT(I).NE.0)THEN
LL=LL+1
IF(ABS(REZ(I)).LT.5.0) THEN
CALL SHS(117,0,REZ(I))
CALL SHS(119,0,REZ(I))
ENDIF
ENDIF
IF(I.GE.25.AND.I.LE.36.AND.IRT(I).NE.0)THEN
LLL=LLL+1
IF(ABS(REZ(I)).LT.5.0) THEN
CALL SHS(118,0,REZ(I))
CALL SHS(119,0,REZ(I))
ENDIF
ENDIF
1 CONTINUE
ENDIF
* Now look at radial segment data...
DO 1001 I=1,3
DO 1002 J=1,NTRAKS(I)
CH = CHSQ(J,I)
CALL SHS(241,0,CH)
NWED = -1
JCNT = 0
DO 1003 K=1,12
JWIR = 12*(I-1) + K
* Track parameters for this track...
PHI = PCOSL(J,I)*ZP(JWIR)+PHZL(J,I)
RR = PSINL(J,I)*ZP(JWIR)+RZI(J,I)
IF(PHI.LT.0.0)PHI=PHI+PI2
IF(PHI.GT.PI2)PHI=PHI-PI2
JP = IRPT(K,J,I)
IF(JP .NE. 0) THEN
IF(NWED.LT.0) THEN
NWED = NW(JP,JWIR)
ENDIF
IF(NW(JP,JWIR) .NE. NWED) GOTO 1003
* IF(IERRF(JP,JWIR) .GT. 1) GOTO 1003
JCNT = JCNT + 1
* Z of wire...
ZEDW(JCNT) = ZP(JWIR)
DS = SDRFT(K,J,I)
* Measured drift...
DRFT(JCNT) = DS*DRI(JP,JWIR)+DWS(JP,JWIR)
* ...and radius (this has been corrected for Lorenz angle).
RMEAS(JCNT) = RM(JP,JWIR)
* Expected drift corrected for shifts...
DRFE(JCNT) = RR*SIN(PHI-WW(JP,JWIR))
RESID(JCNT) = DRFT(JCNT) - DRFE(JCNT)
* Expected radius corrected for shifts...
RAD(JCNT) = RR*COS(PHI-WW(JP,JWIR))
RESR(JCNT) = RMEAS(JCNT) - RAD(JCNT)
ELSE
CALL SHS(209,0,FLOAT(JWIR))
ENDIF
1003 CONTINUE
IF(JCNT .GE.4) THEN
DO 1009 KK=1,JCNT
CALL SHS(232+I,0,RESID(KK))
CALL SHS(236 ,0,RESID(KK))
CALL SHD(242 ,0,DRFE(KK),RESID(KK))
CALL SHS(236+I,0,RESR(KK))
CALL SHS(240 ,0,RESR(KK))
CALL SHD(250 ,0,RMEAS(KK),RESR(KK))
1009 CONTINUE
ENDIF
IF(JCNT .GE. 6) THEN
* Close to wire stuff...
ENDIF
1002 CONTINUE
1001 CONTINUE
RETURN
END
*