pro nis_c_metfind, seq_in, sourcedir, verbose, header_in, $ voltcor, volterr ; SUB-PROGRAM of nis_proc ;------------------------------------------------------------------- ; ABSTRACT ; Finds MET-dependent coefficientts from tables in sourcedir. ; 1) Motor Correction factor and error ; 2) Heater event times for flags ; ; INPUTS ; seq_in - sequence of spectra ; header_in - header from input FITS file. to be modified and saved ; with dark data as its own FITS file. ; sourcedir - source directory for NISCAL programs and data ; verbose - Toggle description of events std output. ; ; OUTPUTS ; mvcor - Motor Voltage Correction factors ; mverr - Noise associated w. MVcor ; Heater event flags in the seq_in data columns ; USES ; nis_motor_V_COR.dat - Shutter Motor voltage correction file derived from ; different NIS phases ; nis_motor_V_ERR.dat - shutter motor noise error table ; nis_motor_V_MET.dat - METs for each motoer voltage correctionentry in the two ; tables above. ; nis_heater_event_MET.dat ; sxpar - reads header data for keyword ; ; HISTORY ; Created 06/27/00 by N. R. Izenberg ; NOTES ; From NIS sequence data: ; columns 2 and 3 define MET high and low word ; column 10 = shutter in/out (0 = in) ; Heater Flag = column 52 ; Polarization Flag = column 53 ; columns 132-163 = 32 Ge detectors ; columns 164-195 = 32 InGas detectors ;------------------------------------------------------------------------------ ; Main header=header_in NAX=sxpar(header,'NAXIS2') ; number of spectra Fname=sxpar(header,'NEAR-003') FMET=double(strmid(fname,3,9)) ;MET of start spectrum polflag=0 ;Get METs ;-------------------------------------------------- mets=lonarr(NAX) for m=0,NAX-1 do begin met_hi=double(seq_in(1,m)) met_lo=double(seq_in(2,m)) if (met_lo lt 0) then met_lo=65536.d0+met_lo mets(m)=long(met_hi*65536.d0+met_lo) endfor ; load in MVC ;---------------------------------------------------------------------- ; Read In full Votor voltage table, error table, and MET table vcorrec=12 ; number of records in MET table vcormet=dblarr(1,vcorrec) ; MET list openr,unit,sourcedir+'lib_tables/nis_motor_v_met.dat',/get_lun readf,unit,vcormet close,unit,/all vcortab=fltarr(64,vcorrec) openr,unit,sourcedir+'lib_tables/nis_motor_v_cor.dat',/get_lun readf,unit,vcortab close,unit,/all verrtab=fltarr(64,vcorrec) openr,unit,sourcedir+'lib_tables/nis_motor_v_err.dat',/get_lun readf,unit,verrtab close,unit,/all VMET = max(where(vcormet lt FMET)) ; closest preceeding voltage correction voltcor=vcortab(*,VMET) volterr=verrtab(*,VMET) ; Find heater events and flag them ;---------------------------------------------------------------------- ; As of 071301: ; Heater Event table is FG (approach, Jan 19, 2000) through end ; of NIS mission (NB) ; Flags: ; -1 = No heater influence ; 0 = Heater turn-on within 100 seconds ; # = Time in seconds since heater turn-on within 2200 sec. ; "High influence" of heater event extends from turn on to ~2200 seconds after. ; Read in heater event table, go through Spetra mets. heatrec=100 heatmet=dblarr(1,heatrec) ; MET list openr,unit,sourcedir+'lib_tables/nis_heater_event_met.dat' readf,unit,heatmet close,unit,/all ;HMET = heatmet(max(where(heatmet lt FMET))) ; closest preceeding correction ;Step through sequence spectrum by spectrum for Flags ;---------------------------------------------------- for i=0,nax-1 do begin SMET=mets(i) locate=max(where(heatmet lt SMET)); closest preceeding event ; No events recorded prior to MET 4991436 ; (Phase AD during cruise) if locate eq -1 then HMET = 0 else HMET = heatmet(locate) case 1 of SMET-HMET le 100 : seq_in(51,i) = 0 SMET-HMET le 2200 : seq_in(51,i) = SMET-HMET else : seq_in(51,i) = -1 endcase endfor if verbose eq 1 then begin print,' STEP 1B: Motor Voltage coeffs extracted' print,' Heater Events determined' endif return end