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
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
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
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