Initial commit
This commit is contained in:
93
gen/fit_mon.f
Normal file
93
gen/fit_mon.f
Normal file
@ -0,0 +1,93 @@
|
||||
subroutine fit_mon(monit)
|
||||
|
||||
implicit none
|
||||
|
||||
include 'fit.inc'
|
||||
|
||||
integer i
|
||||
real monit,ymon1,s
|
||||
|
||||
1004 FORMAT (' Desired Monitor (default:',F12.0,' ): ',$)
|
||||
|
||||
if (monit .eq. 0) then
|
||||
WRITE (ISYSWR,1004) YMON
|
||||
READ (ISYSRD,'(F10.0)',END=999,err=999) YMON1 ! Scale YVAL to common monitor YMON1
|
||||
else
|
||||
ymon1=monit
|
||||
endif
|
||||
999 if (ymon1 .eq. 0 .or. ymon1 .eq. ymon) return
|
||||
if (ymon .eq. 0) then
|
||||
ymon=ymon1
|
||||
do i=1,npkt
|
||||
rmon(i) = ymon1
|
||||
enddo
|
||||
return
|
||||
endif
|
||||
s=ymon1/ymon
|
||||
ymon=ymon1
|
||||
do i=1,npkt
|
||||
sig(i) = sig(i)*s
|
||||
YVAL(i)=YVAL(i)*s
|
||||
enddo
|
||||
end
|
||||
|
||||
|
||||
subroutine fit_auto_mon
|
||||
|
||||
implicit none
|
||||
|
||||
include 'fit.inc'
|
||||
|
||||
real rbest, rdif, rmean, r, rd
|
||||
|
||||
integer j
|
||||
|
||||
rmean=0
|
||||
do j=nxmin,nxmax
|
||||
rmean=rmean+rmon(j)
|
||||
enddo
|
||||
if (nxmax .gt. nxmin) rmean=rmean/(nxmax+1-nxmin)
|
||||
rbest=ymon
|
||||
rdif=abs(ymon-rmean)
|
||||
do j=nxmin,nxmax
|
||||
r=rmon(j)
|
||||
rd=abs(r-rmean)
|
||||
if (rd .lt. rdif) then
|
||||
rdif=rd
|
||||
rbest=r
|
||||
endif
|
||||
enddo
|
||||
|
||||
if (rbest .ne. ymon) then
|
||||
call fit_mon(rbest)
|
||||
print *,'Overall Monitor changed to ',ymon
|
||||
endif
|
||||
end
|
||||
|
||||
|
||||
|
||||
subroutine fit_usemon(imon)
|
||||
|
||||
implicit none
|
||||
|
||||
include 'fit.inc'
|
||||
|
||||
integer imon,i
|
||||
|
||||
10 format (' 0 Automatic'
|
||||
1 /' 1 Std. Monitor'
|
||||
1 /' 2 Primary Beam Monitor'
|
||||
1 /' 3 Auxilliary Beam Monitor'
|
||||
1 /' 4 Time'
|
||||
1 /' 5 Proton Current'
|
||||
1 /' Channel to use as Monitor [',i1,']: ',$)
|
||||
|
||||
if (imon .eq. 0) then
|
||||
call dat_used_mon(i)
|
||||
print 10, i
|
||||
read(isysrd,'(i10)',end=999,err=999) i
|
||||
if (i .gt. 0) call dat_use_mon(i)
|
||||
else
|
||||
call dat_use_mon(imon)
|
||||
endif
|
||||
999 end
|
Reference in New Issue
Block a user