def add_population_flux(axis, sn_type, pdf_type, gamma_dict, gamma, time_key,
                        **kwargs):

    sens, sens_e, energy = gamma_dict.get(gamma, [np.nan, np.nan, np.nan])
    if np.isnan(sens):
        logging.warning(f"No sensitivity for {sn_type}, {pdf_type}")

    z = kwargs.get("z", 2.5)
    pop_sens_flux = get_population_flux(energy * u.erg,
                                        get_ccsn_rate_type_function(sn_type),
                                        gamma, z)
    logging.debug(pop_sens_flux)

    default_label = (f"{float(time_key) / 364.25} yr {pdf_type}"
                     if pdf_type == "decay" else f"{time_key} day {pdf_type}")

    perc = pop_sens_flux / get_diffuse_flux_at_1GeV()[0]
    logging.debug(f"percentage of diffuse flux: {perc.value * 100:.2f}%")
    default_label += f": {perc.value * 100:.1f}%"

    sens_flux_time_esquared = (pop_sens_flux * energy_range_gev**(-1 * gamma) *
                               energy_range_gev**2)

    axis.plot(
        energy_range_gev,
        sens_flux_time_esquared,
        label=kwargs.get("label", default_label),
        ls=kwargs.get("ls", ""),
        color=get_sn_color(sn_type),
    )

    return axis
示例#2
0
def add_rate_sntype(axis, sn_type, zrange, normed=False, **kwargs):
    rate_fct = get_ccsn_rate_type_function(sn_type)
    rate = np.array([rate_fct(z) for z in zrange])
    norm_to = quad(rate_fct, 0, 2.3)[0] if normed else 1
    rate /= norm_to
    axis.plot(zrange, rate, color=kwargs.get('color', get_sn_color(sn_type)), label=kwargs.get('label', sn_type),
              **kwargs)
    return axis
def add_cumulative_rate_sntype(axis, sn_type, zrange, normed=False, **kwargs):
    rate_fct = get_ccsn_rate_type_function(sn_type)
    rate = [rate_fct(z) for z in zrange]
    cum_rate = np.cumsum(rate)
    norm_to = quad(rate_fct, 0, 2.3)[0] if normed else 1
    cum_rate /= norm_to
    axis.plot(
        zrange,
        cum_rate,
        color=kwargs.get("color", get_sn_color(sn_type)),
        label=kwargs.get("label", sn_type),
        **kwargs,
    )
    return axis
示例#4
0
def add_cumulative_flux_sntype(axis, gamma_dict, gamma, sn_type, rate_fct, zrange, **kwargs):

    rate_fct = get_ccsn_rate_type_function(sn_type)
    sens, sens_e, energy = gamma_dict.get(gamma, [np.nan, np.nan, np.nan])
    f = list()
    for z in zrange:
        f.append(get_population_flux(energy * u.erg, rate_fct, gamma, z))

    def integrand(zz): return get_population_flux(energy * u.erg, rate_fct, gamma, zz)
    norm_to = quad(integrand, 0, 2.3)[0]
    f = np.array(f) / norm_to

    axis.plot(zrange, f, label=kwargs.get('label', sn_type), color=kwargs.get('color', get_sn_color(sn_type)),
              **kwargs)

    return axis
示例#5
0
def add_population_flux(axis, sn_type, pdf_type, gamma_dict, gamma, time_key, **kwargs):

    sens, sens_e, energy = gamma_dict.get(gamma, [np.nan, np.nan, np.nan])
    if np.isnan(sens):
        logging.warning(f'No sensitivity for {sn_type}, {pdf_type}')

    z = kwargs.get('z', 2.5)
    pop_sens_flux = get_population_flux(energy * u.erg, get_ccsn_rate_type_function(sn_type), gamma, z)
    logging.debug(pop_sens_flux)

    default_label = f'{float(time_key) / 364.25} yr {pdf_type}' if pdf_type == 'decay' else \
        f'{time_key} day {pdf_type}'

    perc = pop_sens_flux/get_diffuse_flux_at_1GeV()[0]
    logging.debug(f'percentage of diffuse flux: {perc.value * 100:.2f}%')
    default_label += f': {perc.value * 100:.1f}%'

    sens_flux_time_esquared = pop_sens_flux * energy_range_gev ** (-1 * energy_gamma) * \
                              energy_range_gev ** 2

    axis.plot(energy_range_gev, sens_flux_time_esquared,
              label=kwargs.get('label', default_label), ls=kwargs.get('ls', ''), color=get_sn_color(sn_type))

    return axis