def eq_26_axisymmetric_ceiling_jet_temperature(Q_dot_c_kW: float, z_H:
    float, z_0: float, r: float):
    """Equation 26 in Section 8.4.3.2 PD 7974-1:2019 calculates the temperature of ceiling jet above fire.

    :param Q_dot_c_kW: in kW, conductive heat release rate.
    :param z_H: in m, height of the ceiling above the fire source.
    :param z_0: height of the virtual source above the fuel surface.
    :param r: in m, radial distance from the ceiling impingement point.
    :return theta_cj: in deg.C, temperature (above ambient temperature) of ceiling jet.

    NOTES
    The properties of the ceiling jet are dependent upon the surface roughness of the ceiling together with heat losses
    to it. Most of the methods available in [24] calculate the maximum temperature and velocity in the ceiling jet. If
    detectors or sprinkler heads are situated substantially lower than where the maximum temperature and velocity
    occur, then longer activation times should be expected.

    The ceiling jet formulae assume that the jet is moving through ambient air and is not submerged within a ceiling
    smoke layer. Existing correlations in 8.3.3 for the maximum temperature and velocity in the plume can be used when
    `r` are less than or equal to the limits given. `z_H-z_0`

    REFERENCES
    [24] ALPERT R.L. Ceiling Jet Flows, SFPE Handbook of Fire Protection Engineering, Fifth Edition, 14, 429–454, 2016.
    """
    try:
        assert r / (z_H - z_0) > 0.134
    except AssertionError:
        errmsg = (
            f"Failed to assert `r / (z_H - z_0) = {r / (z_H - z_0):.3f} > 0.134`. Inputs are outside of the Alpert's ceiling jet correlation limits."
            )
        raise ValueError(errmsg)
    aa = 6.721
    bb = Q_dot_c_kW ** (2 / 3) / (z_H - z_0) ** (5 / 3)
    cc = (r / (z_H - z_0)) ** -0.6545
    theta_cj = aa * bb * cc
    return theta_cj
