*Given the observe frame lightcurve, determine if the SNe are discoverable by the survey or not.*

    **Key Arguments:**
        - ``log`` -- logger
        - ``redshiftArray`` -- the array of random redshifts
        - ``observedFrameLightCurveInfo`` -- the observed franme lightcurve info (dictionary)
        - ``pathToOutputDirectory`` -- path to the output directory (provided by the user)
        - ``pathToOutputPlotDirectory`` -- path to add plots to
        - ``plot`` -- generate plots?

    **Return:**
        - ``discoverableList`` -- a list of dictionaries describing if the object is discoverable in each filter and finally if it is discoverable in any filter.

def determine_if_sne_are_discoverable(
        log,
        redshiftArray,
        limitingMags,
        observedFrameLightCurveInfo,
        pathToOutputDirectory,
        pathToOutputPlotDirectory,
        plot=True):
    """
    *Given the observe frame lightcurve, determine if the SNe are discoverable by the survey or not.*

    **Key Arguments:**
        - ``log`` -- logger
        - ``redshiftArray`` -- the array of random redshifts
        - ``observedFrameLightCurveInfo`` -- the observed franme lightcurve info (dictionary)
        - ``pathToOutputDirectory`` -- path to the output directory (provided by the user)
        - ``pathToOutputPlotDirectory`` -- path to add plots to
        - ``plot`` -- generate plots?

    **Return:**
        - ``discoverableList`` -- a list of dictionaries describing if the object is discoverable in each filter and finally if it is discoverable in any filter.
    """
    ################ > IMPORTS ################
    ## STANDARD LIB ##
    ## THIRD PARTY ##
    import numpy as np
    import matplotlib.pyplot as plt
    ## LOCAL APPLICATION ##
    import dryxPython.plotting as dp

    ################ >ACTION(S) ################
    filters = ['g', 'r', 'i', 'z']
    models = ['he80', 'he100', 'he130']

    discoverableList = []
    for i in range(len(observedFrameLightCurveInfo)):
        discoveryDict = {}
        for ffilter in filters:
            if observedFrameLightCurveInfo[i]['peakMags'][ffilter] > limitingMags[ffilter]:
                discoveryDict[ffilter] = False
            else:
                discoveryDict[ffilter] = True
        discoveryDict['any'] = False
        for k, v in discoveryDict.iteritems():
            if v is True:
                discoveryDict['any'] = True
                break

        discoverableList.append(discoveryDict)

    maxVal = np.max(redshiftArray) * 1.1

    if plot:
        hitList = []
        missList = []
        faintList = []
        for i in range(len(discoverableList)):
            discoveryDict = discoverableList[i]
            if discoveryDict['any'] is True:
                hitList.append(redshiftArray[i])
            else:
                missList.append(redshiftArray[i])

        hitArray = np.array(hitList)
        missArray = np.array(missList)
        faintArray = np.array(faintList)

        dataDictionary = {'Discoverable': hitArray,
                          'Undiscoverable': missArray}
        plot_polar(
            log,
            title="Discoverable SN Redshift Distribution",
            dataDictionary=dataDictionary,
            pathToOutputPlotsFolder=pathToOutputPlotDirectory,
            dataRange=False,
            ylabel=False,
            radius=maxVal,
            circumference=False,
            prependNum=False)

    return discoverableList