Unverified Commit 8043575f authored by Akke Viitanen's avatar Akke Viitanen
Browse files

Add KH13 line from RV15

parent 769b6f6c
Loading
Loading
Loading
Loading
+35 −3
Original line number Diff line number Diff line
@@ -45,9 +45,20 @@ def get_log_mbh_reines_volonteri2015(log_mstar, alpha=7.45, beta=1.05):
    return alpha + beta * (log_mstar - 11)


def get_log_mbh_kormendy_ho2013(log_mstar, alpha=8.56, beta=1.58):
    """Return Kormendy & Ho 2013."""
    return 8.56 + 1.58 * (log_mstar - 11)
def get_log_mbh_kormendy_ho2013(log_mstar, alpha=8.56, beta=1.58, from_rv15=False):
    """Return Kormendy & Ho 2013.

    If from rv15 = True, then return the "scaled" K&H13 relation from their
    Fig. 8
    """
    if not from_rv15:
        return alpha + beta * (log_mstar - 11)

    # NOTE: estimated visually from RV15 data on 20251214. Values are
    # approximate ones but reproduce the line in Fig. 8
    c = -4.20
    m = 1.17
    return m * log_mstar + c


def get_log_mbh_haring_rix2004(log_mstar, a=8.20, b=1.12, da=0.10, db=0.06, add_error=False):
@@ -106,6 +117,27 @@ def get_log_mbh_zou2024(log_mstar, z=0.0, is_tng300=False):
    return np.interp(log_mstar, x, y, left=np.nan, right=np.nan)


GRAHAM2023_ROWS = [
    "E/Es,e",
    "E/ES,e/S0(dust=Y)",
    "BCG∗",
    "major_mergers",
    "S",
    "S_(w/o_Circinus)",
    "S0/Es,b_(dust=Y)",
]


def get_log_mbh_graham2023(log_mstar, which="E/Es,e"):
    """
    Return a MBH relation from Graham+2023 Table 1: https://arxiv.org/pdf/2305.03242
    """
    row = GRAHAM2023_ROWS.index(which)
    data = np.loadtxt("data/graham2023/table1.txt", usecols=(2, 4, 5))
    A, C, B = data[row, :]
    return A * (log_mstar - C) + B


def get_delta_log_mbh_shankar2019(log_mstar, low=0.0, high=np.inf):
    """Return equation 6 from Shankar+2019."""
    delta_mbh = 0.32 - 0.1 * (log_mstar - 12)
+21 −4
Original line number Diff line number Diff line
@@ -25,8 +25,9 @@ lw1 = 2.5
lw2 = 2.0
alpha = 0.80
cmap = mpl.colormaps["gist_heat"]
cmap2 = mpl.colormaps["cool"]
norm = mpl.colors.Normalize(vmin=0.0, vmax=5.5)
cmap2 = mpl.colormaps["rainbow"]
norm2 = mpl.colors.Normalize(vmin=0.0, vmax=4.0)
###############################################################################


@@ -40,7 +41,7 @@ def main():
        # log_mbh = mbh.get_log_mbh_continuity_new(log_mstar, z)
        ls = "solid" if z < 4 else "dotted"
        log_mbh = mbh.get_log_mbh_continuity_new2(log_mstar, np.full_like(log_mstar, z))
        axes[0].plot(log_mstar, log_mbh, color=cmap(norm(z)), lw=lw1, label=f"$z = {z:d}$", ls=ls)
        axes[0].plot(log_mstar, log_mbh, color=cmap(norm(z)), lw=lw1, label=f"$z = {z:.0f}$", ls=ls)

    # Right panel: Plots the local Con Eq against literature
    # log_mbh = mbh.get_log_mbh_continuity(log_mstar, 0.0)
@@ -53,7 +54,9 @@ def main():
        color="k",
        # label="Continuity equation, $z=0$"
    )

    axes[1].fill_between(log_mstar, log_mbh - 0.50, log_mbh + 0.50, color="k", alpha=0.20)

    axes[1].plot(
        log_mstar,
        mbh.get_log_mbh_haring_rix2004(log_mstar),
@@ -63,14 +66,26 @@ def main():
        alpha=alpha,
        ls="dashdot",
    )

    # axes[1].plot(
    #    log_mstar,
    #    mbh.get_log_mbh_kormendy_ho2013(log_mstar),
    #    lw=lw2,
    #    label="K&H13",
    #    alpha=alpha,
    #    ls="dashed",
    # )

    axes[1].plot(
        log_mstar,
        mbh.get_log_mbh_kormendy_ho2013(log_mstar),
        mbh.get_log_mbh_kormendy_ho2013(log_mstar, from_rv15=True),
        lw=lw2,
        # label="K&H13 (R&V15)",
        label="K&H13",
        alpha=alpha,
        ls="dashed",
    )

    axes[1].plot(
        log_mstar,
        mbh.get_log_mbh_reines_volonteri2015(log_mstar),
@@ -93,7 +108,9 @@ def main():
        print("Plotting Zou+2024")
        for z in [0.0, 2.0, 4.0]:
            log_mbh = mbh.get_log_mbh_zou2024(log_mstar, np.full_like(log_mstar, z), is_tng300=True)
            axes[0].plot(log_mstar, log_mbh, color=cmap2(norm(z)), lw=lw1, label=f"$z = {z:d}$ (Z24)" % z)
            axes[0].plot(
                log_mstar, log_mbh, color=cmap2(norm2(z)), lw=lw1, label=f"$z = {z:.0f}$ (Z24)", ls="dashed"
            )
        axes[0].legend()

    fig.tight_layout()