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
;                                 <calc_xrt_chn_trans.pro>, 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
