def test_propagation(hop, vheight, dist,
                     region_hmax={"D":115.0,"E":150.0,"F":900.0},
                     region_hmin={"D":75.0,"E":115.0,"F":150.0}):
    """Test the propagation path for realism.  Use the basic properties of HF
    radars.
    D-region (<= 115 km) is detected at distances less than 500 km
    E-region (115 - 150(or 200?) km) is detected at distances lass than X km
    F-region (>= 150 km) is detected at all distances
    Parameters
    -------------
    hop : (float)
        Number of hops traveled by this radar signal
    vheight : (float)
        Virtual height of the peak of the propagation path
    dist : (float)
        Distance from the radar to the first peak of the propagation path in km
    region_hmax : (dict)
        Maximum virtual heights allowed in each ionospheric layer.
        (default={"D":115.0,"E":150.0,"F":400.0})
    region_hmin : (dict)
        Minimum virtual heights allowed in each ionospheric layer.
        (default={"D":75.0,"E":115.0,"F":150.0})
    Returns
    -----------
    good : (boolian)
        True if the path is realistic, False if it is not
    """
    good = True

    if "D" in region_hmax.keys() and vheight <= region_hmax["D"]:
        if hop > 0.5 or dist > 500.0:
            # D-region backscatter is restricted to 0.5 hop ionospheric
            # backscatter near the radar (flat earth-approximation holds,
            # great circle distance is rounded down, to simplify things)
            good = False
    elif "E" in region_hmax.keys() and vheight <= region_hmax["E"]:
        if hop < 1.5 and dist > 900.0:
            # 0.5E and 1.0E backscatter is restrictued to slant path distances
            # of 1000 km or less.  1.5E backscatter is typically seen at far
            # range gates and can be entirely E-region or F/E-region
            good = False

    return good