FUNCTION get_xrt_channel


; === Preparatory stuff ================================

  XRT_CALIB = get_logenv('$SSW_XRT_CALIB')

  ccd_file  = XRT_CALIB + '/genx/xrt_ccd.geny'
  mirr_file = XRT_CALIB + '/genx/xrt_mirror.geny'
  filt_file = XRT_CALIB + '/genx/xrt_filter_' +                    $
              ['Al-mesh','Al-poly','C-poly','Ti-poly','Be-thin',   $
               'Be-med','Al-med','Al-thick','Be-thick','Entrance', $
               'Open'] + '.geny'

  chn_descrip = 'Hinode XRT x-ray channel transmissions'
  chn_name = ['Al-mesh','Al-poly','C-poly','Ti-poly','Be-thin',       $
              'Be-med','Al-med','Al-thick','Be-thick',                $
              'Al-poly/Al-mesh','Al-poly/Ti-poly','Al-poly/Al-thick', $
              'Al-poly/Be-thick', 'C-poly/Ti-poly', 'C-poly/Al-thick']

  chn_config = [['Entrance','mirror','mirror','Open','Al-mesh' ,'ccd'], $
             ['Entrance','mirror','mirror','Al-poly','Open'    ,'ccd'], $
             ['Entrance','mirror','mirror','C-poly' ,'Open'    ,'ccd'], $
             ['Entrance','mirror','mirror','Open'   ,'Ti-poly' ,'ccd'], $
             ['Entrance','mirror','mirror','Be-thin','Open'    ,'ccd'], $
             ['Entrance','mirror','mirror','Be-med' ,'Open'    ,'ccd'], $
             ['Entrance','mirror','mirror','Al-med' ,'Open'    ,'ccd'], $
             ['Entrance','mirror','mirror','Open'   ,'Al-thick','ccd'], $
             ['Entrance','mirror','mirror','Open'   ,'Be-thick','ccd'], $
             ['Entrance','mirror','mirror','Al-poly','Al-mesh' ,'ccd'], $
             ['Entrance','mirror','mirror','Al-poly','Ti-poly' ,'ccd'], $
             ['Entrance','mirror','mirror','Al-poly','Al-thick','ccd'], $
             ['Entrance','mirror','mirror','Al-poly','Be-thick','ccd'], $
             ['Entrance','mirror','mirror','C-poly' ,'Ti-poly' ,'ccd'], $
             ['Entrance','mirror','mirror','C-poly' ,'Al-thick' ,'ccd']   ]

  n_filt = n_elements(filt_file)
  n_chn  = n_elements(chn_name)


; === Get components ===================================

  restgenx, ccd,    file=ccd_file
  restgenx, mirror, file=mirr_file
  restgenx, filter, file=filt_file[0]
  for ii = 1,(n_filt-1) do begin
    restgenx, filt_temp, file=filt_file[ii]
    filter = [temporary(filter), filt_temp]
  endfor


; === Make channel structures ==========================

  ss_ent = where(filter.name eq 'Entrance')

  chn_temp = {type:'channel', name:'', descrip:chn_descrip, $
              en_filter:filter[ss_ent[0]], mirror1:mirror,  $
              mirror2:mirror, fp_filter1:filter[0],         $
              fp_filter2:filter[0], ccd:ccd                  }

  chn = replicate(chn_temp, n_chn)
  chn.name = chn_name

  for ii = 0,(n_chn-1) do begin
    ss = where(filter.name eq chn_config[0,ii])
    chn[ii].en_filter   = filter[ss[0]]
    chn[ii].mirror1     = mirror
    chn[ii].mirror2     = mirror
    ss = where(filter.name eq chn_config[3,ii])
    chn[ii].fp_filter1  = filter[ss[0]]
    ss = where(filter.name eq chn_config[4,ii])
    chn[ii].fp_filter2  = filter[ss[0]]
    chn[ii].ccd         = ccd
  endfor


; === Finish ===========================================

  return, chn


END
