def METHOD_NAME(
    vertical_updraught: Cube,
    hail_size: Cube,
    cloud_condensation_level: Cube,
    convective_cloud_top: Cube,
    hail_melting_level: Cube,
    orography: Cube,
) -> np.ndarray:
    """Computation of a hail fraction using the following steps: firstly,
    the hail fraction is estimated as varying linearly with the maximum vertical
    updraught so that a maximum vertical updraught of 5 m/s has a hail fraction of
    0 whilst a maximum vertical updraught of 50 m/s has a hail fraction of 0.25.
    These values, including the hail fraction upper bound, are based on expert
    elicitation. Next, the hail fraction is set to zero if either the cloud
    condensation level temperature is below -5 Celsius, the convective cloud top
    temperature is above -15 Celsius or the hail melting level is above orography.
    As a final check, the hail size is then checked for hail with a size larger
    than 2 mm. If the hail size is above this limit but the hail fraction is
    below 0.05, the hail fraction is set to 0.05.
    The values chosen are based on expert elicitation with some information from
    Dennis & Kumjian, 2017.
    References:
        Dennis, E.J., and M.R. Kumjian. 2017.
        “The Impact of Vertical Wind Shear on Hail Growth in Simulated Supercells.”
        J. Atmos. Sci. 74 (3): 641-663. doi:https://doi.org/10.1175/JAS-D-16-0066.1.
    Returns:
        Hail fraction array.
    """
    # Hail size of 2 mm that always corresponds to a non-zero hail fraction.
    hail_size_limit = 0.002
    # Cloud condensation level temperature in Kelvin. If below this temperature,
    # a hail fraction of 0 is set.
    ccl_limit = 268.15
    # Convective cloud top temperature in Kelvin. If above this temperature,
    # a hail fraction of 0 is set.
    cct_limit = 258.15
    hail_fraction = np.interp(vertical_updraught.data, [5, 50], [0, 0.25]).astype(
        np.float32
    )
    hail_fraction[
        (cloud_condensation_level.data < ccl_limit)
        | (convective_cloud_top.data > cct_limit)
        | (hail_melting_level.data > orography.data)
    ] = 0
    hail_fraction[
        (hail_size.data > hail_size_limit) & (hail_fraction < 0.05)
    ] = 0.05
    return hail_fraction