sim: histfeas/simclass.py
    cam: camclass.py
    rawdata: nframe x ny x nx ndarray
    t: integer index to read
    odir: output directory (where to write results)

    plots both cameras together,
    and magnetic zenith 1-D cut line
    and 1 degree radar beam red circle centered on magnetic zenith

def plotRealImg(sim, cam, rawdata, t: int, odir: Path=None, fg=None):
    """
    sim: histfeas/simclass.py
    cam: camclass.py
    rawdata: nframe x ny x nx ndarray
    t: integer index to read
    odir: output directory (where to write results)

    plots both cameras together,
    and magnetic zenith 1-D cut line
    and 1 degree radar beam red circle centered on magnetic zenith
    """
    ncols = len(cam)
    #  print('using {} cameras'.format(ncols))
    T = nans(ncols, dtype=datetime)

#    if asi is not None:
#        ncols=3
#        if isinstance(asi,(tuple,list)):
#            pass
#        elif isinstance(asi,(str,Path)):
#            asi = Path(asi).expanduser()
#            if asi.is_dir():
#                asi=list(asi.glob('*.FITS'))
    if fg is None:
        doclose = True
        fg, axs = subplots(nrows=1, ncols=ncols, figsize=(
            15, 12), dpi=DPI, facecolor='black')
        axs = atleast_1d(axs)  # in case only 1
        # fg.set_size_inches(15,5) #clips off
    else:  # maintain original figure handle for anim.writer
        doclose = False
        fg.clf()
        axs = [fg.add_subplot(1, ncols, i + 1) for i in range(ncols)]

    for i, C in enumerate(cam):
        if C.usecam:  # HiST cameras
            # print('frame {}'.format(t))
            # hold times for all cameras at this time step
            T[i] = updateframe(t, rawdata[i], None, cam[i], axs[i], fg)
        elif C.name == 'asi':  # ASI
            dasc = dio.load(C.fn, treq=T[sim.useCamBool][0])
            C.tKeo = dasc.time

            updateframe(0, dasc.values, dasc.wavelength, C,
                        axs[i], fg)  # FIXME may need API update
            try:
                overlayrowcol(axs[i], C.hlrows, C.hlcols)
            except AttributeError:
                pass  # az/el were not registered
        else:
            logging.error(f'unknown camera {C.name} index {i}')

        if i == 0:
            axs[0].set_ylabel(datetime.strftime(
                T[0], '%x')).set_color('limegreen')

            # NOTE: commented out due to Matplotlib 1.x bugs
            # fg.suptitle(datetime.strftime(T[0],'%x')) #makes giant margins that tight_layout doesn't help, bug
            # fg.text(0.5,0.15,datetime.strftime(T[0],'%x'))#, va='top',ha='center') #bug too
            # fg.tight_layout()
            # fg.subplots_adjust(top=0.95)

    # TODO: T[0] is fastest cam now, but needs generalization
    writeplots(fg, 'rawFrame', T[0], odir=odir,
               dpi=sim.dpi, facecolor='k', doclose=doclose)