pro make_xrt_chn_trans, XRT_channel, qabort ; ========================================================================= ;+ ; PROJECT: ; Solar-B / XRT ; ; NAME: ; MAKE_XRT_CHN_TRANS ; ; CATEGORY: ; Calibration ; ; PURPOSE: ; Calculate the transmission for each channel. ; ; CALLING SEQUENCE: ; MAKE_XRT_CHN_TRANS, XRT_channel, [,qabort] ; ; INPUTS: ; XRT_CHANNEL: [Mandatory] Variable used to return XRT_channel structure ; with transmission fields populated and ; provide required data for calculations. ; ; KEYWORDS: ; None. ; ; OUTPUTS: ; XRT_CHANNEL: (structure) Returns fully populated filter structure, or ; filter skeleton if called with /DEFINE. ; QABORT: [Optional] program return status ; ; EXAMPLES: ; make_xrt_chn_trans, XRT_channel, qabort ; ; ; COMMON BLOCKS: ; None. ; ; NOTES: ; Uses routine multiply_curves, now in file multiply_curves.pro ; Code and logic reuse from calc_xrt_chn_trans.pro. ; ; MODIFICATION HISTORY: ; progver = 'v2008.Sep.15' ; --- (Alisdair Davey/Mark Weber) ; First debugged version. Derived from ; , v2007-May-15. progver = 'v2008.Oct.01' ; --- (M.Weber) Reviewed version. ; ;- ; ========================================================================= qabort = 0 ; Multiply entrance filter with primary mirror. len1 = XRT_channel.en_filter.length len2 = XRT_channel.mirror1.length input1 = [[XRT_channel.en_filter.wave[0:len1-1]], $ [XRT_channel.en_filter.trans[0:len1-1]] ] input2 = [[XRT_channel.mirror1.wave[0:len2-1]], $ [XRT_channel.mirror1.refl[0:len2-1]]] xrange = 0 output = multiply_curves(input1, input2, xrange=xrange) ; Multiply with secondary mirror. input1 = [[xrange], [output]] xrange = 0 len2 = XRT_channel.mirror2.length input2 = [[XRT_channel.mirror2.wave[0:len2-1]], $ [XRT_channel.mirror2.refl[0:len2-1]] ] output = multiply_curves(input1, input2, xrange=xrange) ; Multiply with FP filter1. input1 = [[xrange], [output]] xrange = 0 len2 = XRT_channel.fp_filter1.length input2 = [[XRT_channel.fp_filter1.wave[0:len2-1]], $ [XRT_channel.fp_filter1.trans[0:len2-1]] ] output = multiply_curves(input1, input2, xrange=xrange) ; Multiply with FP filter2. input1 = [[xrange], [output]] xrange = 0 len2 = XRT_channel.fp_filter2.length input2 = [[XRT_channel.fp_filter2.wave[0:len2-1]], $ [XRT_channel.fp_filter2.trans[0:len2-1]] ] output = multiply_curves(input1, input2, xrange=xrange) ; Multiply with CCD QE. input1 = [[xrange], [output]] xrange = 0 len2 = XRT_channel.ccd.length input2 = [[XRT_channel.ccd.wave[0:len2-1]], $ [XRT_channel.ccd.qe[0:len2-1]] ] output = multiply_curves(input1, input2, xrange=xrange) ;;;ARD Outputs XRT_channel.length = n_elements(xrange) XRT_channel.wave[0:XRT_channel.length-1] = xrange XRT_channel.trans[0:XRT_channel.length-1] = output end