*-- Author : I.O. Skillicorn 27/09/96
SUBROUTINE FREFIT
* REFIT TRACK MODEL INCLUDING PLANARS
* this routine updates the radial-based track parameters
* using planar data. both phi-z and r-z are updated.
* planars alone define r-z
*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.
* Common for track parameter errors...
COMMON /FTRERR/ DSLPHI, DPHZER, COVP, DSLPR, DRZER, COVR
* Common for segment numbers...
COMMON /FPSEGN/ ISG(3,MAXTRK)
* 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/FTPPBK/NPP,IPP(36,100),CHPP(100),LP(3,100)
C THE SIGN OF THE PLANAR DRIFT IS FILLED IN FTADD
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
COMMON /FPSEG1/ ISGG(3,MAXTRK)
COMMON /FLINK3/LNK3(MAXTRK,3)
* Local arrays...
DIMENSION XX(100),YY(100),WP(100)
PARAMETER(PI2=6.283185307)
if(ig.eq.0)return
DO 100 I=1,ig
iF((isgg(1,i)+isgg(2,i)+isgg(3,i)).ne.0)then
c at least one planar: - fit r-z
IC=0
DO 20 ISM=1,3
IPLAN=isgg(ISM,I)
I1=(ISM-1)*12+1
I2=ISM*12
C PLANARS
IF(IPLAN.NE.0)THEN
DO 21 IP=I1,I2
Z1=ZPP(IP)
XF=XYDXY(1,IPLAN,ISM)/10.+Z1*XYDXY(3,IPLAN,ISM)
YF=XYDXY(2,IPLAN,ISM)/10.+Z1*XYDXY(4,IPLAN,ISM)
IC=IC+1
XX(IC)=Z1
YY(IC)=sqrt(xf**2+yf**2)
WP(IC)=1.
21 CONTINUE
ENDIF
20 continue
c fit r-z defined by planars
CALL FTLFTW(XX,YY,WP,IC,0,2,RS,RI,D1,D2,D3,D4)
c replace radial-defined r-z by planar-defined r-z
rpsing(i)=rs
zig(i)=ri
endif
IC=0
DO 200 ISM=1,3
IPLAN=isgg(ISM,I)
I1=(ISM-1)*12+1
I2=ISM*12
C PLANARS
IF(IPLAN.NE.0)THEN
DO 210 IP=I1,I2
Z1=ZPP(IP)
XF=XYDXY(1,IPLAN,ISM)/10.+Z1*XYDXY(3,IPLAN,ISM)
YF=XYDXY(2,IPLAN,ISM)/10.+Z1*XYDXY(4,IPLAN,ISM)
IC=IC+1
XX(IC)=Z1
YY(IC)=ATAN2(YF,XF)
IF(YY(IC).LT.0.0)YY(IC)=YY(IC)+PI2
WP(IC)=1./(0.1/SQRT(XF**2+YF**2))
210 CONTINUE
ENDIF
C RADIALS
DO 220 IP=I1,I2
Z1=ZP(IP)
C RADIUS DEFINED BY radials
RR=rpsing(I)*z1+zig(I)
J=irn(IP,I)
IF(J.EQ.0)GOTO220
IC=IC+1
PHI=ATAN((DRI(J,IP)*sdn(IP,I)+DWS(J,IP))/RR) +WW(J,IP)
IF(PHI.LT.0.0)PHI=PHI+PI2
XX(IC)=Z1
YY(IC)=PHI
WP(IC)=1./(0.1/RR)
220 CONTINUE
200 CONTINUE
IF(IC.GT.1)THEN
DO 250 JJ=2,IC
DP=YY(JJ)-YY(JJ-1)
IF(DP.GT.0.0)THEN
IF(ABS(DP).GT.ABS(DP-PI2))YY(JJ)=YY(JJ)-PI2
ELSE
IF(ABS(DP).GT.ABS(DP+PI2))YY(JJ)=YY(JJ)+PI2
ENDIF
250 CONTINUE
ENDIF
C REFIT PHI-Z INCLUDING planars
C WRITE(*,*)I,phzg(I),rpcosg(I)
CALL FTLFTW(XX,YY,WP,IC,0,2,PS,PI,D1,D2,D3,D4)
phzg(I)=PI
rpcosg(I)=PS
C WRITE(*,*)I,phzg(I),rpcosg(I)
100 CONTINUE
RETURN
END
*