PRO mk_xrt_filt_genx, outvar=outvar, qabort=qabort ; ========================================================================= ;+ ; PROJECT: ; Solar-B / XRT ; ; NAME: ; ; MK_XRT_FILT_GENX ; ; CATEGORY: ; ; Calibration ; ; PURPOSE: ; ; Generate the XRT Filter description structures. ; Calculates the transmissions for elements in thicknesses ; using . ; ; CALLING SEQUENCE: ; ; MK_XRT_FILT_GENX [, outvar=outvar] [, qabort=qabort] ; ; INPUTS: ; ; Reads element indices of refraction from the "refr" directory. ; ; KEYWORDS: ; ; ; OUTPUTS: ; ; OUTVAR - [Optional] (structure array) The filter structures as ; written to the genx file. ; QABORT - [Optional] (Boolean) Indicates that the program ; exited gracefully without completing. (Might be ; useful for calling programs.) ; 0: Program ran to completion. ; 1: Program aborted before completion. ; ; EXAMPLES: ; ; Full auto: ; IDL> mk_xrt_filt_genx ; ; Want to see result in IDL: ; IDL> outvar = 1 ; IDL> mk_xrt_filt_genx, outvar=outvar ; IDL> help, outvar ; ; COMMON BLOCKS: ; ; none ; ; NOTES: ; ; none ; ; CONTACT: ; ; Comments, feedback, and bug reports regarding this routine may be ; directed to this email address: ; xrt_manager ~at~ head.cfa.harvard.edu ; ; MODIFICATION HISTORY: ; progver = 'v2003-Feb-10' ;--- (M.Weber) Generated from someone else's ; version of for DECODE ; and AIA. progver = 'v2005-Mar-09' ;--- (MW) Generated from . progver = 'v2005-Mar-10' ;--- (MW) Generated from . progver = 'v2007-May-13' ;--- (MW) Modified for XRT analysis tree. ; ;- ; ========================================================================= ;=== Initial setup ======================================= prognam = 'MK_XRT_FILT_GENX' XRT_CALIB = get_logenv('$SSW_XRT_CALIB') qabort = 0B filt_descrip = 'Luxell. Calculated with multifilt.pro. Data for ' + $ 'material indices of refraction from the database at ' + $ 'http://www.cxro.lbl.gov/optical_constants/getdb2.html;' $ + ' density = -1' filt_name = ['Al-mesh', 'Al-poly', 'C-poly', 'Ti-poly', 'Be-thin', $ 'Be-med', 'Al-med', 'Al-thick', 'Be-thick', 'Entrance', $ 'Open'] long_name = 'Hinode_XRT_FM_filter_' + filt_name filt_elem = [['Al2O3', 'Al', 'Al2O3', ''], $ ['Al2O3', 'Al', 'Al2O3', 'polyimide'], $ ['C', 'polyimide', '', ''], $ ['TiO2', 'Ti', 'TiO2', 'polyimide'], $ ['BeO', 'Be', 'BeO', ''], $ ['BeO', 'Be', 'BeO', ''], $ ['Al2O3', 'Al', 'Al2O3', ''], $ ['Al2O3', 'Al', 'Al2O3', ''], $ ['BeO', 'Be', 'BeO', ''], $ ['Al2O3', 'Al', 'Al2O3', 'polyimide'], $ ['', '', '', ''] ] ele_thick = [[50., 1503, 50, 0], $ [75, 1183, 25, 2656], $ [6038, 3478, 0, 0], $ [75, 3245, 25, 2522], $ [75, 89850, 75, 0], $ [75, 299850, 75, 0], $ [75, 124850, 75, 0], $ [75, 249850, 75, 0], $ [3000, 2994000, 3000, 0], $ [75, 1600, 25, 2200], $ [0, 0, 0, 0] ] filt_mesh = [0.80, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] filt_substrate = ['0.80 mesh', 'polyimide', 'polyimide', 'polyimide', $ '', '', '', '', '', 'polyimide',''] n_filts = n_elements(filt_name) ;=== Check inputs ======================================== ;; None currently. ;=== Make filter structure =============================== str_temp = {type:'filter', name:'', long_name:'', $ descrip:filt_descrip, material:strarr(4), $ thick:fltarr(4), thick_units:'Angstroms', $ dens:fltarr(4), dens_units:'g cm^-3', $ wave:fltarr(4000), wave_units:'Angstroms', $ trans:fltarr(4000), substrate:'', length:1L, $ data_files:strarr(4) } ;=== Calculate transmission and write file =============== densities = 1 n_files = 1 for ii = 0,(n_filts-1) do begin print, filt_name[ii], '--- ' + strcompress(ii+1,/rem) + ' of ' $ + strcompress(n_filts,/rem) if (filt_name[ii] ne 'Open') then begin multifilt, wave, trans, filt_elem[*,ii], ele_thick[*,ii], $ filt_mesh[ii], densities=densities, n_files=n_files ss = where(filt_elem[*,ii] ne '', nelem) endif else begin wave = outvar[0].wave[0:outvar[0].length-1] trans = (wave * 0.) + 1.0 densities = fltarr(4) n_files = strarr(4) nelem = 4 endelse nwave = n_elements(wave) str_out = str_temp str_out.name = filt_name[ii] str_out.long_name = long_name[ii] str_out.material = filt_elem[*,ii] str_out.thick = ele_thick[*,ii] str_out.dens[0:nelem-1] = densities str_out.wave[0:nwave-1] = wave str_out.trans[0:nwave-1] = trans str_out.substrate = filt_substrate[ii] str_out.length = nwave str_out.data_files[0:nelem-1] = n_files outfile = 'xrt_filter_'+filt_name[ii] savegenx, str_out, file=outfile if (ii eq 0) then outvar = str_out $ else outvar = [outvar, str_out] endfor END ;======================================================================