33 lines
802 B
Fortran
33 lines
802 B
Fortran
FUNCTION chixy(bang)
|
|
REAL chixy,bang,BIG
|
|
INTEGER NMAX
|
|
PARAMETER (NMAX=1000,BIG=1.E30)
|
|
INTEGER nn,j
|
|
REAL xx(NMAX),yy(NMAX),sx(NMAX),sy(NMAX),ww(NMAX),aa,offs,avex,
|
|
*avey,sumw,b
|
|
COMMON /fitxyc/ xx,yy,sx,sy,ww,aa,offs,nn
|
|
b=tan(bang)
|
|
avex=0.
|
|
avey=0.
|
|
sumw=0.
|
|
do 11 j=1,nn
|
|
ww(j)=(b*sx(j))**2+sy(j)**2
|
|
if(ww(j).lt.1./BIG) then
|
|
ww(j)=BIG
|
|
else
|
|
ww(j)=1./ww(j)
|
|
endif
|
|
sumw=sumw+ww(j)
|
|
avex=avex+ww(j)*xx(j)
|
|
avey=avey+ww(j)*yy(j)
|
|
11 continue
|
|
avex=avex/sumw
|
|
avey=avey/sumw
|
|
aa=avey-b*avex
|
|
chixy=-offs
|
|
do 12 j=1,nn
|
|
chixy=chixy+ww(j)*(yy(j)-aa-b*xx(j))**2
|
|
12 continue
|
|
return
|
|
END
|