integer function cesrcur () !(total current in uA)/10 use cesr_utils !for lunget ! Checks the file, curflag.dat, to see whether to use ! the CERN current monitor or the feedback current monitor to ! grab the total current in CESR ! when moved to linux Mar 2011, removed use_cern from tot_cur ! common block (only member?) ; unknown if this is used anymore. implicit none integer, save:: flag, digiraw, lun, icu logical, save:: init=.true. logical, save:: use_rem,use_cern,err character*120 flagfile & /'$CESR_ONLINE/machine_data/constants/constants/curflag.dat'/ real, save:: uvalue character*20 ustr,unitstr if(init) then flag=3 !default hi-res lun = lunget() call opener(lun,flagfile,err) if(err) goto 100 read(lun, *) flag 100 close(lun) use_cern = flag.ne.0 use_rem = flag.eq.3 !bob meller 20 bit cern mon readout init = .false. endif if(use_rem) then call vxgetn('CSR CERN CUR',1,1,icu) call gen_conver('CSR CERN CUR',1,icu,uvalue,ustr,unitstr) cesrcur=100.*uvalue !ma convert to ua/10 if(cesrcur.lt.0) cesrcur=0 elseif(use_cern) then !lower res AI readout call vxgetn('CSR CUR MEAS', 1,1,cesrcur) ! CERN BCM 10UA/UNIT cesrcur = 10*cesrcur else call vmgcmd('CSR TRAINMON', 1,1,digiraw) !while CERN is broken cesrcur = digiraw / 10 !while CERN IS BROKEN (uA -> uA/10) endif return end