;#> irsfringe.dc1 ; Identifier irsfringe ; ; Purpose remove fringes from IRS data ; ; Synopsis struct = irsfringe( struct [, order = order $ ; , modules = modules $ ; , bcd = bcd $ ; , slitpos = slitpos $ ; , fmask = fmask $ ; , wrange = wrange $ ; , lowpass = lowpass $ ; , suppress = suppress $ ; , supwid = supwid $ ; , status = status $ ; , plot = plot $ ; , /noplot $ ; , /clearplots $ ; MODFLAT specifics (when FLAT is provided) ; , /modflat ; , nbin = nbin $ ; , edge = edge $ ; , method = method $ ; , noshift = noshift $ ; , nosmooth = nosmooth $ ; , fitorder = fitorder $ ; , /sinefit $ ; SINE defringing specifics ; , cycle = cycle $ ; , ncycle = ncycle $ ; , cystep = cystep $ ; , /auto $ ; , nfringes = nfringes $ ; , tol = tol $ ; , /weight $ ; , fringelist = fringelist $ ; , /apply_fringelist ; , evidence = evidence $ ; , /gui ] ) ; ; ; Arguments Name I/O Type: Description: ; ------------------------------------------------------------ ; struct I struct IRS 1-D spectra ; ; data selection ; --------------- ; order I intarr list of IRS orders to be processed ; -1 : combine all orders in a module ; -(list) : combine selected orders ; NB in V 1.x this does not yet ; give optimum results ; see Comments ; [ default: all separate ] ; ; modules I intarr data from IRS modules to process ; 0 ... 5 --> SL-ap1, SL-ap2, ; LL-ap1, LL-ap2, SH, LH ; NB. - it is possible to process ; SL and LL data. However we do ; not yet know if it makes sense ; to do so, ; - for LH the defaults have not been ; verified for lack of testdata ; Any feedback is useful ; [ default: all ] ; ; bcd I intarr bcd's ; -1 : combine all bcd's ; -(list) : combine selected bcd's ; [ default: separate ] ; ; slitpos I intarr slit positions ( 0 .. 30 ) ; -1 : combine all slit positions ; -(list) : combine selected sl.pos ; [ default: separate ] ; ; fmask I long select only data with ; ( flag AND fmask ) EQ 0 ; [ default: '40000000'XL (== 2L^30) ; == BAD data ] ; ; wrange I fltarr[2] limit operations to wavelengths ; within wrange. ; [ default: defined by module and order ] ; ; lowpass I keyword only apply a lowpass filter for the ; fringe isolation. By default a bandpass ; with the high frequency at the ; sampling frequency (or 1/4 of the ; lower cutoff) is applied. ; [ default: bandpass ] ; ; suppress I fltarr set of wavelengths to disregard during ; continuum and fringe fitting ; (eg. at emission lines where the ; automatic masking fails) ; ; supwid I fltarr width of the suppression ; for each "suppress" wavelength or ; one for all ; [ default : instrumental fwhm ] ; general ; ------- ; plot I int -1 : no plotting (== /noplot) ; 0 : plot the data and result ; 1-3: various plotting options ; see irsfringe_modflat and ; irsfringe_sine for details ; [ default: 0 ] ; ; noplot I keyword no plotting (same as plot=-1) ; ; clearplots I keyword remove plot windows on exit ; ; status O int exit status ; 0: successfully processed ; 1: error, input struct is returned ; ; MODFLAT specifics (not yet available, requires improved extraction tools) ; ----------------- ; /modflat I -- Use the MODFLAT option, in this ; case no sine defringing is done ; unless /SINEFIT is set. ; nbin I int Number of wavelength regions into which ; to split each order for derivation of ; shift and smooth/enhance parameters. ; Give INTARR(1) if nbin same for all ; orders, or INTARR(nord) for each ; order separately. ; [default: 1] ; ; edge I flt What fraction of wavelength coverage ; of each order (in %) should be masked ; on the edges in shift/smooth/enhance ; determination because of, for example, ; weak signal at order edges or some ; edge anomaly. ; [default: 15% of wavelength range ; per order at each edge] ; ; method I str Method with which to determine shift ; and smooth/enhance factors. ; Possibilities are: ; 'LIN' : minimum chi square for ; linear range of parameters ; 'AMO' : amoeba minimization method, ; which has an elegant way of ; searching parameter space ; and is probably also faster ; than 'LIN'. ; Give STRARR(1) if method same for all ; orders, or STRARR(nord) for each order ; separately. ; [default: 'AMO' for all orders] ; ; noshift I intarr Do not determine nor apply phase shift ; correction to fringes in flat field ; spectrum. Either give 1 if you don't ; want shifting for any order, or an ; array with 1's and 0's for each ; echelle order. ; [default: 0, determine shift] ; ; nosmooth I intarr Do not determine nor apply amplitude ; smoothing or enhancing correction to ; fringes in flat field spectrum. ; Either give 1 if you don't want ; smoothing for any order, or an array ; with 1's and 0's for each Eachelle order. ; [default: 0, determine smooth factors] ; ; fitorder I int Fit the smooth/enhance and/or shift ; factors with a smooth polynomial as a ; function of order (as plotted)? ; -1: No, just apply the smooth/enhance ; and shift values derived for each ; order without doing polynomial fit. ; 0: Interactively go through the ; various options. ; 1: Use polynomial fit of smooth/enhance ; factors as function of order. ; Do NOT rederive shifts. ; 2: Use polynomial fit of smooth/enhance ; factors as function of order. ; Do rederive shifts with this. ; 3: Use polynomial fit of shifts as ; function of order. ; Do NOT rederive smooth/enhance ; factors. ; 4: Use polynomial fit of shifts as ; function of order. ; Do rederive smooth/enhance factors. ; 5: Use polynomial fits of shifts AND ; smooth/enhance factors as function ; of order. ; ORDER = -1 (combining all orders) ; implies FITORDER=5 unless FITORDER ; is also specified, in which case ; the specified fitorder is used. ; [default: fitorder=-1] ; ; noshift I int Do not determine nor apply phase ; shift correction to fringes in ; flat field spectrum. Either ; give 1 if you don't want shifting ; for any order, or an array with 1's ; and 0's for each echelle order. ; [default: 0, determine shift ; for each order] ; ; nosmooth I int Do not determine nor apply amplitude ; smoothing or enhancing correction ; to fringes in flat field spectrum. ; Either give 1 if you don't want ; smoothing for any order, or an array ; with 1's and 0's for each echelle order. ; [default: 0, determine smooth/enhance ; factors for each order] ; ; /iter I -- If method='LIN' then it may be ; necessary in some cases to iterate ; over shift and smooth/enhance ; determination to get the best solution. ; [default: do not iterate] ; ; filename I string File into which the fit parameters ; will be saved. If the filename is ; without extension it will get the ; default extension .xdr ; [default: modflat_params.xdr] ; ; /sinefit I -- When /MODFLAT is epcified an extra ; SINE defringing run is done ; ; ; SINE defringing specifics ; ------------------------- ; cycle I real cycle of the fringe component ; searched for ; [ default SL : TBI ; LL : 650 ; SH : [3500,8500] ; LH : [3000,8000] ] ; ; ncycle I int search window in cycles ; [ default SL : TBI ; LL : 600 ; SH : 2000 ; LH : 2500 ] ; ; cystep I real step in the cycles ; ( only useful when computer ; resources are too limited ) ; [ default = 1 ] ; ; /auto I keyword automatic defringing. ; ; nfringes I int maximum number of fringes removed ; Specifying NFRINGES=-1 will ; not give any sine defringing. ; [ default: determined automatically ] ; ; tol I real remove fringes until the reduction ; in chisq is less than tol ; ( 0.01 == 1 percent ) ; [ default: 0 == disabled ] ; ; weight I keyword set all weights to 1 ; [ default: less weights to outliers ] ; ; fringelist O struct cumulative!! list of extracted fringes ; ; { module int IRS module ; order int order ; bcd int bcd number ; slitpos int slit position ; frin_nr int fringe number ; cycle float fringe cycle ; cosamp float amplitude of cosine component ; sinamp float amplitude of sine component ; chisq float chisq ; chi_red } float accumulative chisq reduction ; ; apply_fringelist I -- apply the input fringelist to the data ; ; evidence O flt(arr) evidence == log( probability) ; (undefined if not auto) ; ; /gui I -- Start a graphical user interface. ; First one 'default' run through ; IRSFRINGE is done after which the ; gui starts. ; ; ; Returns defringed data ; ; Description IRSFRINGE employs two methods to reduce the effect ; of fringes in IRS data. The first method is MODFLAT ; which tries to minimize the fringe residuals by ; matching the science data with the flatfield by ; shifting and smoothing the flatfield. ; The second method fits robust sine functions (which ; is the first order approximation of the formal ; optical interference function). ; ; Both methods can be used independently or together. ; ; Modifying flatfield ; ------------------- ; ; Defringes the data using the correlation method, similar ; to the procedure resp_inter for ISO/SWS. The fringe phase ; is a function of source position in the slit, while the ; spectral resolution depends on the filling factor of ; the source in the slit. Straight division of observation ; and flat is thus expected to give quite strong residual ; fringes. ; ; To minimize fringe residuals, MODFLAT uses the isolated ; fringes from the astronomical observation and flat field. ; It shifts the fringe phase (i.e. wavelength scale) and ; matches the flat field spectral resolution to that of ; the observation by smoothing or artificially enhancing ; the fringe amplitudes. The modified flat field fringe ; spectrum is then multiplied back into the flat field ; 'continuum'. ; ; The astronomical spectrum is subsequently divided ; through the final modified flat field, giving a spectrum ; hopefully free of fringes and full of reliable exciting ; astronomical features. ; ; Resolved spectral features like emission lines or glitches ; are automatically detected and masked and subsequently given ; a weight zero. When there are still points that should ; not be taken along in the calculations SUPPRESS and SUPWID ; can be used to exclude these. ; ; ; Robust SINE fitting ; ------------------- ; ; The sine fitting used in IRSFRINGE is the first order ; approximation of the full optical interference model. ; ; T^2 I ; It = ------- * ----------------------------- ; (1-R)^2 1+(4R/(1-R)^2) * sin^2(wD!PI) ; ; where T is the transmission, R the reflectance, ; w the wavelength in wavenumbers and D the optical ; thickness of the interfering layer. For small amplitudes ; of the reflectance R this approximates to: ; ; It = A * cos(2!PIwD+a) ; ; which can be rewritten in the computationally more handy ; form used in irsfringe: ; ; It = A cos(2!PIwD) + B sin(2!PIwD) ; ; Fringes are detected in wavenumber (1/micron) space, where ; they have a constant `wavelength', in cycles per wavenumber ; (C/Wn [==micron]). ; ; To find fringes we fit a cosine function to the data ; f(n) = alfa.cos( p.n + phi ) == A.cos(p.n) + B.sin(p.n) ; A, B and p are parameters to be estimated. p the 'wavelength' ; of the fringe. ; For SH the main fringe is located at app. 3500 ; cycle/wavenumber and for LH at app. 3000. A second ; component at app. 8000 is sometimes seen in very good ; S/N data. ; For a given p f(n) is a linear function which can easily ; be fitted to the data. So we search all wavelengths for ; e.g. SH from CYCLE (=2500) to CYCLE+NCYCLE*CYSTEP (=4500), ; fit A and B and find the minimum in chi-sq. ; ; In automatic mode we calculate the Bayesian evidence including ; every new fringe. We keep the fringe if this evidence is ; larger than the evidence carried by the previous set of ; fringes. The process of identifying new fringes continues ; as long as the evidence increases with each new fringe. For ; all fringes the amplitudes are determined and the total ; fringe-set is divided out. ; ; In non-automatic mode fringes are extracted until the reduction ; in chi-sq is less than TOL or the number of identified ; fringes is larger than NFRINGES. If the chi-sq increases ; the proccess stops even if the number of found fringes ; is less than NFRINGES. ; ; Before the fitting is started the fringes are isolated ; from the data using a bandpass filter for the main component ; and a lowpass filter for the high frequency component. ; It is possible to use a lowpass filter in all cases by ; using the /LOWPASS option. ; ; Resolved spectral features like emission lines or glitches ; are automatically detected and masked and subsequently given ; a weight zero. Large unmasked outliers in the background ; subtracted data are given less weight unless /WEIGHT is set. ; When there are still points that should not be taken along ; in the calculations SUPPRESS and SUPWID can be used to ; exclude these. ; ; Depending on the value of PLOT several sets of plots pop up. ; -1. (or /NOPLOT) no plotting. ; 0. The result of the fringe removal is plotted. Original data ; in white, smoothed background in red. The defringed data ; are displayed in green, offset somewhat for clarity. ; In the lower panel the background-removed data are plotted ; in white (wgt=1), red (wgt=0) or yellow (0