@mdift		;ted's library of routines
;
;*************************************************
;;wait, 7*60.*60. 		;it is 9:00, want to have it run at 4:00, so wait 7 hours
;*************************************************
;
;HISTORY:
;	Written Feb-96 by M.Morrison
;	20-Feb-96 (MDM) - adjusted the signal level to account for the 
;			  0.3% shorter exposure for 9 out of 10 first images.
;V2.2	21-Feb-96 (MDM) - Restarted due to SPAWN crash
;			- Fixed outdir to be the same as indir
;			- Added version tracking
;V2.3	22-Feb-96 (MDM) - restuctured to have CODE options to select which
;			  set to process
;V2.31	 1-Mar-96 (MDM) - Added new code option 4 to do 29-Feb
;V2.32	18-Mar-96 (MDM) - Added new code option 5 to do 16-Mar
;V2.33	18-Mar-96 (MDM) - Added new code option 6 to do 26-Jan
;V2.34	20-Mar-96 (MDM) - Added new code option 7 to do 19-Mar
;V2.35	28-Mar-96 (MDM) - Rerun "code=1" with rebin=64
;V2.40	 1-Apr-96 (MDM) - Added capability to process high cadence 10 frame lists
;			- Added code 10
;V2.41	 1-Apr-96 (MDM) - Added code 11
;V2.42	 1-Apr-96 (MDM) - Added capability to process both sets of 10 frames
;			  in the high cadence case
;V2.50	 4-Apr-96 (MDM) - Added processing of S/C off point (code = 20)
;V2.51	 4-Apr-96 (MDM) - Added code 22 (with wait before executing)
;V2.52	 8-Apr-96 (MDM) - Added code 23 (s/c offpoint)
;V3.00	30-May-96 (MDM) - Modified to use the previous solution as the first
;			  guess for the next set of points
;			- Modified to save the data to /data14/detunes directory
;			- Re-ran 19-Mar roll data (code=7)
;			- Added deleting the output file first
;V3.01	 3-Jul-96 (MDM) - Added code 30 (data taken in two 30 sec pieces)
;			- Added qfit7 to FTMAP call
;V3.02	15-Jul-96 (MDM) - Corrected 2 30 sec option code (wrong tunings)
;V3.03	15-Jul-96 (MDM) - Corrected 2 30 sec option code some more
;V3.04	25-Jul-96 (MDM) - Added code 31
;V3.10	29-Jul-96 (MDM) - Changed default values to be from May-96 fitting
;V3.11	 8-Aug-96 (MDM) - Added code 32 (V3.10 was not set in "progver")
;V3.12	13-Aug-96 (MDM) - Added code 33
;			- Added qprob2 code (for detune IP program problem)
;V3.13	14-Aug-96 (MDM) - Added code 34
;V3.14	16-Aug-96 (MDM) - Added qforce_fix for 1.0025 adjustment and re-ran code=7
;V3.15	16-Aug-96 (MDM) - Added code 35 (12-Aug)
;V3.16	26-Aug-96 (MDM) - Added code 39 and 40
;V3.17	 3-Sep-96 (MDM) - Added code 41 and 42
;V3.18	 3-Sep-96 (MDM) - Added "endset" option
;V3.19	 3-Sep-96 (MDM) - Added qsamea0 for code 41
;V3.20	 3-Sep-96 (MDM) - Added code to avoid exposure adjustment fix for two part detunes
;V3.21	 3-Sep-96 (MDM) - Added different first guess values for code 41 and 42.  Removed qsamea0
;V3.22	 6-Sep-96 (MDM) - Added code 43
;V3.23	17-Sep-96 (MDM) - Added code 44
;V3.24	 9-Oct-96 (MDM) - Added code 45
;V3.25	28-Oct-96 (MDM) - Added code 46
;V3.26	22-Nov-96 (MDM) - Added code 47
;V3.27	 4-Dec-96 (MDM) - Added code 100
;V3.28	 4-Dec-96 (MDM) - Added code 48
;V3.29	15-Jan-97 (MDM) - Added code 49
;V3.30	14-Feb-97 (MDM) - Added code 100
;V3.31	25-Mar-97 (MDM) - Added code 50 and 60
;V3.32	26-Mar-97 (MDM) - Modified code 50
;V3.33	 5-May-97 (MDM) - Added code 61 (4-Apr data)
;			- Put in protection for when the D/L of a minutes worth is interrupted
;			  (by and end of file)
;V3.34	 5-May-97 (MDM) - Restarted Code 61
;			- Added Code 62 (27-Mar data)
;			- Added "flavor"
;V3.35	13-May-97 (MDM) - Put in code 200
;V3.40	28-May-97 (MDM) - Modified to handle Stanford level 0 data
;			- Added code 70
;V3.41	16-Jun-97 (MDM) - Used code 200 (13-Jun)
;V3.42	21-Jul-97 (MDM) - Added code 71 (18-Jul data)
;V3.43	21-Oct-97 (MDM) - Added code 72 (25-Sep data)
;			- Added "9708" flavor (new tuning)
;V3.44	21-Oct-97 (MDM) - Added code 73 (6,28,29,30-Aug data)
;V3.45	28-Oct-97 (MDM) - Added code 201 (flavor 9708)
;V3.46	22-Dec-97 (TDT)	- Added OBSID's for new focus (still code 201), longer infil_arr
;			- Added code 74 (15-Dec data), 75 (5-Dec), 76 (3-Nov), 77 (1-Nov)
;V3.47	23-Dec-97 (TDT)	- Set up for code 201, new focus OBSID's
;	23-Oct-98 (TDT) - Added OBSID's 218, 21a, code 203, flavor 9810, tfr_files_offset
;	25-Mar-99 (TDT) - Added OBSID's 2aa, 2ab
;	23-Apr-99 (TDT) - Added OBSID's 246, 247, made flavor & code run-time settable
;	23-Apr-99 (TDT) - Added OBSID's 2e1, 2e2, flavor 9904, new MTM2 180 degrees off
;	23-Apr-99 (TDT) - Added code 78, changed OBSID 21a to 219 (duh!)
;	02-Aug-99 (TDT) - Added OBSID's 315, 316
;	12-Oct-99 (TDT) - Added flavor 9909, OBSID's 349, 34a
;	15-Feb-00 (TDT) - Added flavor 0001, OBSID's 37f, 380
;	12-Jul-00 (TDT) - Added OBSID's 3b3, 3b4
;	07-Aug-00 (TDT) - Added flavor 0007, OBSID's 3e8, 3e9
;	08-Feb-01 (TDT) - Added flavor 0101, OBSID's 451, 452
;	06-Apr-01 (TDT) - Added OBSID's 48c, 48d (same tuning as flavor 0101)
;	02-Jan-02 (TDT) - Added flavor 0106, OBSID's 4f6, 4f7, 52a, 52b


;  Note flavor 9801 is missing!!!!!
;
if (not keyword_set(code)) then code = 203
if (not keyword_set(flavor)) then flavor = '0106'
if (not keyword_set(tfr_files_offset)) then tfr_files_offset = 0
progver = 'GO_DT_ANALYSIS  Ver 3.48
print,progver,'  code ',code,'  flavor ',flavor,'  tfr_files_offset ',tfr_files_offset
;
init_mdift, ftfit_str
;
outdir_manual = '/data14/detunes'
qbad_obs_framelist = 0
q2parts_new = 0
;flavor = ''
;
case code of
  1: begin			;leg flat field
	rebin = 8
	rebin = 64
	rebin = 0
	rebin = 64
	dir = '/md82/log/sci160k/
	;dir = '/data14/data_eof/sci160k/960205/'
	dir = '/data13/data_eof/sci160k/960205/'
	;;stdset=170
	;;stdset = 1080
	outdir = dir
	infil_arr = dir + ['960205_151338', '960205_225108']
	;
	;stdset = 900	;MDM restart 22-Feb
     end

  2: begin			;ptcs (thermal stability)
	dirs = file_list('/data14/data_eof/sci160k', '9*',/cd)
	ff = file_list(dirs, '*_01.tfr', file=files)
	files = strmid(files, 0, 13)
	ss = where((files gt '960209_000000') and (files lt '960212_000000'))
	infil_arr = ff(ss)
	infil_arr = str_replace(infil_arr, '_01.tfr', '')
	rebin = 32
	;
	;restart #1	;Added 13-Feb-96 11:21 EST
	;;st_ifil = 3
	;;stdset = 9619
	;restart #2	;Added 13-Feb-96 11:51 EST
	;;st_ifil=4
	;;stdset = -1
	;Restart #1b	;Added 21-Feb-96 10:34 PST
	st_ifil = 3
	stdset = 8348
	;Restart #2b	;Added 21-Feb-96 14:22 PST
	st_ifil = 5		;/data14/data_eof/sci160k/960209/960209_232459
	stdset = 938
	;Restart #2b	;Added 21-Feb-96 18:07 PST
	st_ifil = 5		;/data14/data_eof/sci160k/960209/960209_232459
	stdset = 8300
	;Restart #3b	;Added 21-Feb-96 20:55 PST
	st_ifil = 6		;/data14/data_eof/sci160k/960209/960210_161757
	stdset = 7177
    end
  3: begin			;oven test			;MDM added 22-Feb-96
	infil_arr = '/data14/data_eof/sci160k/960220/960220_163120
	rebin = 0
	rebin = 64
	;;stdset = -1
	;Restart 1	;Added 22-Feb-96 12:44
	;;stdset = 650	;20-FEB-96  17:22:00 doesn't work?
	;Restart 2
	;;stdset = 813	;20-FEB-96  17:30:00 doesn't work?
	;Restart 3 (after Ted mod to fitting routine)
	stdset = 2900
    end
  4: begin			;impulse oven test			;MDM added 1-Mar-96
	infil_arr = '/data14/data_eof/sci160k/960229/960229_191907
	rebin = 64
	;stdset = -1
	;Restart 1	;Added 5-Mar-96 2:30 PM
	stdset = 6434
	;Restart 2	;Added 5-Mar-96 2:45 PM
	stdset = 6464
    end
  5: begin			;ptcs
	infil_arr = ['/data14/data_eof/sci160k/960315/960315_230241', $
			'/data14/data_eof/sci160k/960316/960316_162840']
	rebin = 64
    end
  6: begin			;ptcs
	infil_arr = '/data13/data_eof/sci160k/960126/960126_160223'
	rebin = 64
    end
  7: begin			;ptcs
	infil_arr = '/data14/data_eof/sci160k/960319/960319_155915
	infil_arr = '/data13/data_eof/sci160k/960319/960319_155915
	rebin = 64
	qforce_fix10025 = 1
	;stdset = 95	;skip over "Arithmetic exception (core dumped)" case
	;stdset = 1834	;skip over "Arithmetic exception (core dumped)" case
	;stdset = 1934	;skip over "Arithmetic exception (core dumped)" case
    end
  ;-------------- High Cadence Stuff
  10: begin
	infil_arr = '/data14/data_eof/sci160k/960311/960311_172315'
	qhc = 1
	rebin = 60
    end
  11: begin
	infil_arr = '/data14/data_eof/sci160k/960322/960322_224400
	qhc = 1
	rebin = 60
	;
	stdset= 125		;MDM 1-Apr-96
    end 
  ;----------------
  20: begin			;oven
	infil_arr = '/data14/data_eof/sci160k/960402/960402_172208
	rebin = 64
    end
  21: begin			;oven
	infil_arr = '/data14/data_eof/sci160k/960402/960402_015639
	rebin = 64
    end
  22: begin			;oven
	infil_arr =    ['/data14/data_eof/sci160k/960403/960403_001356', $
			'/data14/data_eof/sci160k/960403/960403_145431', $
			'/data14/data_eof/sci160k/960403/960403_223923', $
			'/data14/data_eof/sci160k/960404/960404_013729']
	rebin = 64
    end
  23: begin			;oven
	dirs = file_list('/data14/data_eof/sci160k', '9*',/cd)
	ff = file_list(dirs, '*_01.tfr', file=files)
	files = strmid(files, 0, 13)
	ss = where((files ge '960403_145431') and (files le '960405_143052'))
	infil_arr = ff(ss)
	infil_arr = str_replace(infil_arr, '_01.tfr', '')

	rebin = 64

	stdset = 1800		;hang from code=22 run
    end
  32: begin
	;infil_arr = file_list('/data14/morrison/dsds', '*.tfr')
	;infil_arr = str_replace(infil_arr, '.tfr', '')
	infil_arr = '/data14/morrison/dsds/960430_21-23'
	q2parts = 1
	rebin = 64
	LC1 = 85
	LC2 = 66
	setenv,'MDI_STAN_SCI160K=xx
	qbad_obs_framelist = 1
    end
  ;-------------- done in two 30 obs
  33: begin
	infil_arr = '/hosts/michelson/data0/morrison/dsds/960520_2200'
	q2parts = 1
	rebin = 64
	LC1 = 85
	LC2 = 66
	setenv,'MDI_STAN_SCI160K=xx
	qbad_obs_framelist = 1
	qprob2 = 1
	qavoid_corr = 1
    end
  34: begin
	infil_arr = '/data13/data_eof/sci160k/960520/960520_222615
	q2parts = 1
	rebin = 64
	LC1 = 85
	LC2 = 66
	qbad_obs_framelist = 1
	qprob2 = 1
	qavoid_corr = 1
	stdset = 800		;code =33 got the earlier part
    end
  30: begin
	infil_arr = '/data13/data_eof/sci160k/960523/960523_152153'
	q2parts = 1
	rebin = 64
	LC1 = 83
	LC2 = 65
	qbad_obs_framelist = 1
    end
  31: begin
	infil_arr = '/data14/data_eof/sci160k/960724/960724_152951
	q2parts = 1
	rebin = 64
	LC1 = 83
	LC2 = 65
	qbad_obs_framelist = 1
	;;qskip_cal = 1		;temp bypass CAL

	;;stdset = 131
	stdset = 2002
    end
  35: begin
	infil_arr = '/data14/data_eof/sci160k/960812/960812_000009
	q2parts = 1
	rebin = 64
	LC1 = 83
	LC2 = 65
	qbad_obs_framelist = 1
    end
  39: begin
	infil_arr = '/data14/data_eof/sci160k/960824/960824_000008
	q2parts = 1
	rebin = 64
	LC1 = 83
	LC2 = 65
	qbad_obs_framelist = 1
    end
  40: begin
	infil_arr = '/data14/data_eof/sci160k/960824/960824_000008
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [2,6,3,7,4,8,5,9,1]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	qskip_obs = 1		;temp bypass OBS
    end
  41: begin
	infil_arr = '/data14/data_eof/sci160k/960902/960902_150855'	;old detune list
	q2parts = 1
	rebin = 64
	LC1 = 83
	LC2 = 65
	qbad_obs_framelist = 1
	endset = 200
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
	;;qsamea0 = 1
    end
  42: begin
	infil_arr = '/data14/data_eof/sci160k/960902/960902_150855
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  43: begin
	infil_arr = '/data14/data_eof/sci160k/960905/960905_154514
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  44: begin
	infil_arr = '/data14/data_eof/sci160k/960905/960905_140000
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  45: begin
	infil_arr = '/data14/data_eof/sci160k/960930/960930_130000
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  46: begin
	infil_arr = '/data14/data_eof/sci160k/961025/961025_000009
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  47: begin
	infil_arr = '/data14/data_eof/sci160k/961121/961121_010009
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  48: begin
	infil_arr = '/data14/data_eof/sci160k/961203/961203_164525
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  100: begin
	infil_arr = [get_last_tfr(0,/dia), $
			get_last_tfr(1,/dia), $
			get_last_tfr(2,/dia), $
			get_last_tfr(3,/dia), $
			get_last_tfr(4,/dia)]
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  49: begin			;old south pole stuff
	dirs = file_list('/data13/data_eof/sci160k', '9603*')
	infil_arr = file_list(dirs, '*_01.tfr')
	infil_arr = str_replace(infil_arr, '_01.tfr', '')
	;infil_arr = infil_arr(2:*)	& stdset = 90	;core dump on OBS  6-MAR-96  17:58
	infil_arr = infil_arr(2:*)	& stdset = 280	;core dump on OBS  6-MAR-96  18:48
	rebin = 64
    end
  50: begin
	;infil_arr = ['/data14/data_eof/sci160k/970318/970318_205640']
	infil_arr = ['/data14/data_eof/sci160k/970317/970317_010009', $
			'/data14/data_eof/sci160k/970318/970318_010009']
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 1
	rebin = 64
	LC1 = 79
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  60: begin		;new tunings
	;infil_arr = ['/data14/data_eof/sci160k/970319/970319_010010', $
	;		'/data14/data_eof/sci160k/970320/970320_010010', $
	;		'/data14/data_eof/sci160k/970321/970321_010011']
	infil_arr = ['/data14/data_eof/sci160k/970320/970320_010010', $
			'/data14/data_eof/sci160k/970321/970321_010011']
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 77
	LC2 = 64
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  61: begin		;new tunings
	;infil_arr = ['/data14/data_eof/sci160k/970404/970404_010010', $
	;	'/data14/data_eof/sci160k/970404/970404_154101', $
	;	'/data14/data_eof/sci160k/970404/970404_163955', $
	;	'/data14/data_eof/sci160k/970405/970405_010009']
	infil_arr = ['/data14/data_eof/sci160k/970404/970404_163955', $
		'/data14/data_eof/sci160k/970405/970405_010009']
	stdset = 500
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 77
	LC2 = 64
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
    end
  62: begin		;new tunings
	infil_arr = '/data13/data_eof/sci160k/970327/970327_163138
	flavor = '9703'
    end
  200: begin
	infil_arr = [get_last_tfr(0,/dia), $
			get_last_tfr(1,/dia), $
			get_last_tfr(2,/dia), $
			get_last_tfr(3,/dia), $
			get_last_tfr(4,/dia)]
	flavor = '9703'
    end
   70: begin
	infil_arr = ['/hosts/michelson/data0/morrison/detunes/404e4400_01h.37121', $
		'/hosts/michelson/data0/morrison/detunes/404e4400_01h.37122', $
		'/hosts/michelson/data0/morrison/detunes/404e4400_01h.37123', $
		'/hosts/michelson/data0/morrison/detunes/404e4400_01h.37124', $
		'/hosts/michelson/data0/morrison/detunes/404e4400_01h.37125']
	stanford_bypass		;compile replacement READ_MDI and LIST_TFI
	flavor = '9703'
    end
   71: begin
	infil_arr = '/data14/data_eof/sci160k/970718/970718_000006
	stdset = 500
	flavor = '9703'
    end
   72: begin
	infil_arr = '/data14/data_eof/sci160k/970925/970925_000022
	flavor = '9708'
    end
   73: begin
	infil_arr = file_list('/data13/data_eof/sci160k/','*.tfrx')
	infil_arr = str_replace(infil_arr, '.tfrx', '')
	flavor = '9708'
    end
   74: begin
	infil_arr = '/data14/data_eof/sci160k/971215/971215_010010
	flavor = '9708'
    end
   75: begin
	infil_arr = '/data14/data_eof/sci160k/971205/971205_010009
	flavor = '9708'
    end
   76: begin
	infil_arr = '/data14/data_eof/sci160k/971103/971103_010018
	flavor = '9708'
    end
   77: begin
	infil_arr = '/data14/data_eof/sci160k/971101/971101_010016
	flavor = '9708'
    end
   78: begin
	stdset = -1		; TDT 22-Dec-98
	infil_arr = [	'/data13/data_eof/sci160k/981020/981020_000007', $
			'/data13/data_eof/sci160k/981020/981020_052352', $
			'/data13/data_eof/sci160k/981020/981020_195353', $
			'/data13/data_eof/sci160k/981021/981021_000007', $
			'/data13/data_eof/sci160k/981023/981023_000006' ]
	flavor = '9810'
    end
  201: begin
	infil_arr = [get_last_tfr(0,/dia), $
			get_last_tfr(1,/dia), $
			get_last_tfr(2,/dia), $
			get_last_tfr(3,/dia), $
			get_last_tfr(4,/dia), $
			get_last_tfr(5,/dia), $
			get_last_tfr(6,/dia), $
			get_last_tfr(7,/dia)]
	flavor = '9708'
    end
  203: begin
	stdset = -1		; TDT 22-Dec-98
	infil_arr = [get_last_tfr(0+tfr_files_offset,/dia), $
			get_last_tfr(1+tfr_files_offset,/dia), $
			get_last_tfr(2+tfr_files_offset,/dia), $
			get_last_tfr(3+tfr_files_offset,/dia), $
			get_last_tfr(4+tfr_files_offset,/dia), $
			get_last_tfr(5+tfr_files_offset,/dia), $
			get_last_tfr(6+tfr_files_offset,/dia), $
			get_last_tfr(7+tfr_files_offset,/dia)]
;  	flavor = '9810'		TDT  23-APR-99
    end
endcase

print, 'code: ',code,'    flavor: ',flavor, '     infil_arr:'
print, infil_arr

case flavor of
   '9703': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 77
	LC2 = 64
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
       end
   '9708': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 72
	LC2 = 63
	a0_manual = [.33, .12,      1.0, 1.0, 1.0,      0.46, 1.0, 0.0, 0.68]	;center 3 are recalculated 
       end
   '9810': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 69
	LC2 = 63
	a0_manual = [.41, .13,      1.0, 1.0, 1.0,      0.50, 1.0, 0.0, 0.73]	;center 3 are recalculated 
       end
   '9904': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 69
	LC2 = 153
	a0_manual = [.51, .13,      1.0, 1.0, 1.0,      0.50, 1.0, 0.0, 0.73]	;center 3 are recalculated 
       end
   '9909': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 67
	LC2 = 153
	a0_manual = [.51, .13,      1.0, 1.0, 1.0,      0.50, 1.0, 0.0, 0.73]	;center 3 are recalculated 
       end
   '0001': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 69
	LC2 = 154
	a0_manual = [.51, .13,      1.0, 1.0, 1.0,      0.50, 1.0, 0.0, 0.73]	;center 3 are recalculated 
       end
  '0007': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 66
	LC2 = 153
	a0_manual = [.51, .13,      1.0, 1.0, 1.0,      0.50, 1.0, 0.0, 0.73]	;center 3 are recalculated 
       end
  '0101': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 68
	LC2 = 154
	a0_manual = [.51, .13,      1.0, 1.0, 1.0,      0.50, 1.0, 0.0, 0.73]	;center 3 are recalculated 
       end
  '0106': begin
	ss_mtm_reorder = [[1,7,6,8,3,5,9,4,2]-1,   [1,2,3,4,5,5,4,3,2]-1+9]
	q2parts_new = 2
	rebin = 64
	LC1 = 65
	LC2 = 153
	a0_manual = [.51, .13,      1.0, 1.0, 1.0,      0.50, 1.0, 0.0, 0.73]	;center 3 are recalculated 
       end
    else:
endcase
;
if (n_elements(lc1) eq 0) then LC1 = 89
dop1 = [-45,-27,-9,+9,+27]
m1 = LC1 + [-15,0,+15,0,15,-15,-15,0,15,Dop1,Dop1+2]
if (n_elements(lc2) eq 0) then LC2 = 71
dop2 = [-22,-13,-4,+5,14]
m2 = LC2 + [-15,0,+15,-15,0,+15,0,+15,-15,Dop2,Dop2+1]
;
qavoid_corr = keyword_set(qhc) or keyword_set(q2part)
;
dark_offset = 1477		;8x8 binned
outext = '.DT20_'
if (keyword_set(qhc)) then begin
    m1 = m1(0:9)
    m2 = m2(0:9)
    outext = '.DT10a_'
    dark_offset = 92
end
if (keyword_set(q2parts) or keyword_set(q2parts_new)) then begin
    ;;m1 = [m1(0:8), m1(10:18)]
    ;;m2 = [m2(0:8), m2(10:18)]
    m1 = [m1(0:13), m1(15:18)]
    m2 = [m2(0:13), m2(15:18)]
    dark_offset = 369		;4x4 binned
end
if (keyword_set(ss_mtm_reorder)) then begin
    m1 = m1(ss_mtm_reorder)
    m2 = m2(ss_mtm_reorder)
end
xt0=m2+float(m1)/1000.
;
;;restgen, file='/mdisw/dbase/cal/files/dt19_ref_struct.genx', dt19_struct
;;a0 = dt19_struct.a0
restgen, file='/mdisw/dbase/cal/files/dt19_ref_struct2.genx', dt19_struct
a0 = dt19_struct.ftfit(32,32).a
if (keyword_set(a0_manual)) then a0 = a0_manual
a0_cal = a0
a0_obs = a0
print, 'initial coeff for OBS', a0_obs, format='(a,1x,13f8.2)'
print, 'initial coeff for CAL', a0_cal, format='(a,1x,13f8.2)'
;
if (n_elements(stdset) eq 0) then stdset = -1
if (n_elements(st_ifil) eq 0) then st_ifil = 0
;
for ifil=st_ifil,n_elements(infil_arr)-1 do begin
    infil = infil_arr(ifil)
    break_file, infil, dsk_log, dir000
    list_tfi, infil, info, /quiet
    ndset = 0
    if (data_type(info) eq 8) then begin
        ninfo = n_elements(info)
        frame = info.framen
        obsid = mask(info.seqid, 0, 12)
        reftime = info.reftime
	dpc = info.dpc
        ;ss = where((frame eq 1) and ((obsid eq '70'x) or (obsid eq '71'x)), nss)
        ;ss = where((frame eq 1) and (obsid eq '70'x), nss)
        ;ss = where((frame eq 1) and (obsid eq '70'x) and (indgen(ninfo) ge stdset), ndset)
        ss = where((frame eq 1) and ((obsid eq '70'x) or (obsid eq '71'x)) $
							and (indgen(ninfo) ge stdset), ndset)
        if (keyword_set(qhc)) then ss = where((frame eq 1) and (obsid eq '92'x) $
							and (indgen(ninfo) ge stdset), ndset)
        if (keyword_set(q2parts)) then ss = where((frame eq 1) and $
				((obsid eq 'c5'x) or (obsid eq 'c3'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (keyword_set(q2parts)) and (ndset eq 0) then ss = where((frame eq 1) and $
				((obsid eq 'ae'x) or (obsid eq 'b5'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (keyword_set(q2parts_new)) then ss = where((frame eq 1) and $
				((obsid eq 'ec'x) or (obsid eq 'ea'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '121'x) or (obsid eq '120'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '161'x) or (obsid eq '160'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '18e'x) or (obsid eq '18f'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '218'x) or (obsid eq '219'x)) and $
				(indgen(ninfo) ge stdset), ndset)
;        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
;				((obsid eq '2aa'x) or (obsid eq '2ab'x)) and $
;				(indgen(ninfo) ge stdset), ndset)
;        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
;				((obsid eq '246'x) or (obsid eq '247'x)) and $
;				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '2e2'x) or (obsid eq '2e1'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '316'x) or (obsid eq '315'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '349'x) or (obsid eq '34a'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '37f'x) or (obsid eq '380'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '3b3'x) or (obsid eq '3b4'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '3e8'x) or (obsid eq '3e9'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '451'x) or (obsid eq '452'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '48c'x) or (obsid eq '48d'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '4c2'x) or (obsid eq '4c3'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '48c'x) or (obsid eq '48d'x)) and $
				(indgen(ninfo) ge stdset), ndset)
        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
				((obsid eq '4f6'x) or (obsid eq '4f7'x)) and $
				(indgen(ninfo) ge stdset), ndset)
;  following for different focus set 12-Nov-2001
;        if (q2parts_new eq 2) then ss = where((frame eq 1) and $
;				((obsid eq '52a'x) or (obsid eq '52b'x)) and $
;				(indgen(ninfo) ge stdset), ndset)
	print,'Data sets with obsid: ',ndset		;TDT 23-Dec-97
        if (ndset ne 0) then begin		;screen for proper 20
            ss2 = where(frame((ss+19)<(ninfo-1)) eq 20)
	    if (keyword_set(q2parts) or keyword_set(q2parts_new)) then ss2 = where(frame((ss+19)<(ninfo-1)) eq 10)
	    if (keyword_set(qprob2)) then ss2 = where(frame((ss+19+2)<(ninfo-1)) eq 10)
            dset = ss(ss2)
            ndset = n_elements(dset)
        end
    end
    if (keyword_set(qhc)) then ndset = ndset*2
    if (keyword_set(endset)) then begin		;MDM added 3-Sep-96
	ss333 = where(dset le endset, ndset)
	if (ndset ne 0) then dset = dset(ss333)
    end
	print,'Data sets to process: ',ndset		;TDT 23-Dec-97
    for i=0,ndset-1 do begin
      nimg = 19
      if (keyword_set(qhc)) then begin
	nimg = 10
	ist = dset(i/2) + (i mod 2)*10
	case (i mod 2) of
	    0: outext = '.DT10a_'
	    1: outext = '.DT10b_'
	endcase
      end else begin
        ist = dset(i)
      end
      ien = (ist+nimg-1) < (n_elements(info)-1)
      dset_arr = indgen(nimg) + ist
      qtimeok = (min(reftime(ist:ien)) eq max(reftime(ist:ien)))
      if (keyword_set(q2parts) or keyword_set(q2parts_new)) then begin
	dset_arr = [indgen(9), indgen(9)+10] + ist
        nimg = 18
	qtimeok = (min(reftime(ist:ien)) eq max(reftime(ist:ien))-60)
      end
      if (keyword_set(qprob2)) then begin
	dset_arr = [indgen(9), indgen(9)+10+2] + ist
	dset_arr(4)=dset_arr(3)		;avoid frame 5 problem
	dset_arr(9+4)=dset_arr(9+3)
	qtimeok = 1	;override time check
      end
      if (qtimeok) then begin		;Added conditional 13-Feb-96 11:21 EST
	read_mdi, infil, dset_arr, img0, h0, tfr=tfr0
	;
	qdo_fix = (ist ne 0) and (not keyword_set(qavoid_corr))
	if (qdo_fix) then if (dpc(dset(i)) ne dpc(dset(i)-1)) then qdo_fix = 0
	if (keyword_set(qforce_fix10025)) then qdo_fix = 1
        if (keyword_set(q2parts) or keyword_set(q2parts_new)) then qdo_fix = 0
	;if (ist ne 0) and (not keyword_set(qavoid_corr)) then if (dpc(dset(i)) eq dpc(dset(i)-1)) then begin
	if (qdo_fix) then begin
	    ;--- Check if the first frame follows a FD cont or an 8x8 bin.  If it follows an 8x8 bin
	    ;    image, then the signal level needs to be adjusted up for a shorter than expected
	    ;    exposure (by 0.3 %)
	    ;MDM added 20-Feb-96 7:28 PM PST
	    dark_offset = 1477
	    img0(*,*,0) = (img0(*,*,0) - dark_offset) * (128.53/128.2) + dark_offset
	    print, '************* Adjusting the signal level by 1.0025 percent'
	end
	;
	qok = bytarr(nimg)+1
	for j=0,nimg-1 do if (min(img0(*,*,j)) lt 0) then qok(j) = 0
	if (keyword_set(qprob2)) then qok([5, 9+5]-1) = 0	;frame 5 is bad
	ssok = where(qok, nssok)
	img = img0(*,*,ssok)
	tfr = tfr0(*,ssok)
	h = h0(*,ssok)
	xt = xt0(ssok)
	;
	;;for j=0,nssok-1 do img(*,*,j) = img(*,*,j) - img0(*,*,19)	;dark subtract
	img = img - dark_offset		;changed to scalar subtraction 11-Feb-96
	if (keyword_set(rebin)) then img = rebin(img, rebin, rebin, nssok)
	type = 'XXX'
	if (obsid(ist) eq '70'x) then type = 'OBS'
	if (obsid(ist) eq '71'x) then type = 'CAL'
	if (obsid(ist) eq '92'x) then type = 'OBS'
	if (obsid(ist) eq 'c5'x) then type = 'OBS'
	if (obsid(ist) eq 'c3'x) then type = 'CAL'
	if (obsid(ist) eq 'ae'x) then type = 'OBS'
	if (obsid(ist) eq 'b5'x) then type = 'CAL'
	if (obsid(ist) eq 'e8'x) then type = 'OBS'
	if (obsid(ist) eq 'ec'x) then type = 'OBS'
	if (obsid(ist) eq 'ea'x) then type = 'CAL'
	if (obsid(ist) eq '121'x) then type = 'OBS'
	if (obsid(ist) eq '120'x) then type = 'CAL'
	if (obsid(ist) eq '161'x) then type = 'OBS'
	if (obsid(ist) eq '160'x) then type = 'CAL'
	if (obsid(ist) eq '18f'x) then type = 'OBS'
	if (obsid(ist) eq '18e'x) then type = 'CAL'
	if (obsid(ist) eq '219'x) then type = 'OBS'
	if (obsid(ist) eq '218'x) then type = 'CAL'
	if (obsid(ist) eq '2ab'x) then type = 'OBS'
	if (obsid(ist) eq '2aa'x) then type = 'CAL'
	if (obsid(ist) eq '247'x) then type = 'OBS'
	if (obsid(ist) eq '246'x) then type = 'CAL'
	if (obsid(ist) eq '2e2'x) then type = 'OBS'
	if (obsid(ist) eq '2e1'x) then type = 'CAL'
	if (obsid(ist) eq '316'x) then type = 'OBS'
	if (obsid(ist) eq '315'x) then type = 'CAL'
	if (obsid(ist) eq '34a'x) then type = 'OBS'
	if (obsid(ist) eq '349'x) then type = 'CAL'
	if (obsid(ist) eq '380'x) then type = 'OBS'
	if (obsid(ist) eq '37f'x) then type = 'CAL'
	if (obsid(ist) eq '3b4'x) then type = 'OBS'
	if (obsid(ist) eq '3b3'x) then type = 'CAL'
	if (obsid(ist) eq '3e9'x) then type = 'OBS'
	if (obsid(ist) eq '3e8'x) then type = 'CAL'
	if (obsid(ist) eq '452'x) then type = 'OBS'
	if (obsid(ist) eq '451'x) then type = 'CAL'
	if (obsid(ist) eq '48d'x) then type = 'OBS'
	if (obsid(ist) eq '48c'x) then type = 'CAL'
	if (obsid(ist) eq '4c3'x) then type = 'OBS'
	if (obsid(ist) eq '4c2'x) then type = 'CAL'
	if (obsid(ist) eq '48d'x) then type = 'OBS'
	if (obsid(ist) eq '48c'x) then type = 'CAL'
	if (obsid(ist) eq '4f7'x) then type = 'OBS'
	if (obsid(ist) eq '4f6'x) then type = 'CAL'
	if (obsid(ist) eq '52b'x) then type = 'OBS'
	if (obsid(ist) eq '52a'x) then type = 'CAL'
	;ref_time = ccd_hdr_info(tfr(*,0), 'REFTIME_STR')
	ref_time = sxpar2(h(*,0), 'REFTIME')
	lab_time = ref_time
	if (keyword_set(qhc)) and ((i mod 2) eq 1) then lab_time = fmt_tim(anytim2ints(lab_time, off=30))
	label = type + ' ' + lab_time
	label = label + '   (' + infil + string(ist,format='(i6)') + ')'
	print, label
	outfilnam = str_replace(ex2fid(anytim2ex(lab_time)), '.', '_') + outext + type
	if (keyword_set(outdir_manual)) then outdir = outdir_manual else outdir = dir000
	outfil = concat_dir(outdir, outfilnam)
	;
	nx = n_elements(img(*,0,0))
	bitmask = bytarr(nx, nx)
	img(0,*,*) = 0		& img(nx-1,*,*) = 0	;MDM added 13-Feb-96
	img(*,0,*) = 0		& img(*,nx-1,*) = 0
	if (keyword_set(quse_cen)) then begin
	    cen = pointing(img(*,*,0))
	    bitmask = circle_mask(bitmask, cen(0), cen(1), 'LE', .98*cen(2), mask=1)
	end else begin
	    sstmp = where(img(*,*,0) gt 0.6*max(img(*,*,0)))
	    bitmask(sstmp) = 1
	end
	;
	if (keyword_set(qdebug)) then begin
	    xy_raster, xx, [[[img]],[[bitmask*max(img)]]], /notime
	    ;stop
	end
	;..... Teds stuff
	qrun = (nssok ge 15)
	if (keyword_set(qhc)) then qrun = (nssok ge 10)
	if (keyword_set(qskip_cal) and (type eq 'CAL')) then qrun=0
	if (keyword_set(qskip_obs) and (type eq 'OBS')) then qrun=0
	if (qrun) then begin
	    case type of
		'OBS': a0 = a0_obs
		'CAL': a0 = a0_cal
	    end
	    ;
	    xt0_save = xt0
	    if (keyword_set(qbad_obs_framelist)) and (type eq 'OBS') then begin
		print, '*** Patching for messedup framelist ***
		dop1 = [-45,-27,-9,+9,+27]
		m1 = LC1 + [-15,0,+15,0,15,-15,-15,0,15,Dop1,Dop1+2]
		dop2 = [-22,-13,-4,+5,14]
		m2 = LC2 + [-15,0,+15,-15,0,+15,0,+15,-15,Dop2,Dop2+1]
		m1 = [m1(0:8), m1(10:18)]
		m2 = [m2(0:8), m2(10:18)]
		xt0= m2+float(m1)/1000.
		xt = xt0(ssok)
	    end
	    ;
	    if (keyword_set(qstop)) then stop
	    ftmap, result, ftfit_str, xt, img, a0, mask=bitmask,label=label, fit7=qfit7, samea0=qsamea0
	    ;ftmap,oft19b,ftfit_str,xt,o19b,a0,mask=m,label=lb
	    ;
	    xt0 = xt0_save
	    ;
	    file_delete, outfil + '.genx'
	    savegen, file=outfil, result, progver
	    ;
	    qok_fit = (result.ftfit(nx/2,nx/2).sig / result.ftfit(nx/2,nx/2).a(2) lt .002) and $
				(result.ftfit(nx/2,nx/2).a(6) gt 0.)
	    if (qok_fit) then case type of
		'OBS': a0_obs = result.ftfit(nx/2,nx/2).a(*)
		'CAL': a0_cal = result.ftfit(nx/2,nx/2).a(*)
	    end
	    if (qok_fit) then case type of
		'OBS': print, 'New initial coeff for OBS', a0_obs, format='(a,1x,12f8.3)'
		'CAL': print, 'New initial coeff for CAL', a0_cal, format='(a,1x,12f8.3)'
	    end
	end else begin
	    print, 'NOT ENOUGH POINTS
	end
; commented out 2-Aug-99 TDT	wdelete
      end
    end
    stdset = -1
end
;
end
