def add_limit_band(ax, limit_labels, E, Veff1, Veff2, n_stations, label, livetime=3*units.year, color='C0'): E = np.array(E) Veff1 = np.array(Veff1) Veff2 = np.array(Veff2) limit1 = fluxes.get_limit_e2_flux(energy = E, veff = Veff1, livetime = livetime, signalEff = n_stations, energyBinsPerDecade=energyBinsPerDecade, upperLimOnEvents=2.44, nuCrsScn='ctw') limit2 = fluxes.get_limit_e2_flux(energy = E, veff = Veff2, livetime = livetime, signalEff = n_stations, energyBinsPerDecade=energyBinsPerDecade, upperLimOnEvents=2.44, nuCrsScn='ctw') ax.fill_between(E/plotUnitsEnergy,limit1/ plotUnitsFlux,limit2/ plotUnitsFlux, color=color, alpha=0.5, label="{2}: {0} stations, {1} years".format(n_stations,int(livetime/units.year),label)) # limit_labels.append(_plt) return limit_labels
def add_limit(ax, limit_labels, E, Veff, n_stations, label, livetime=3*units.year, fmt='-', color='C0'): E = np.array(E) Veff = np.array(Veff) limit = fluxes.get_limit_e2_flux(energy = E, veff = Veff, livetime = livetime, signalEff = n_stations, energyBinsPerDecade=energyBinsPerDecade, upperLimOnEvents=2.44, nuCrsScn='ctw') _plt, = ax.plot(E/plotUnitsEnergy,limit/ plotUnitsFlux, fmt, color=color, label="{2}: {0} stations, {1} years".format(n_stations,int(livetime/units.year),label), linewidth=3) limit_labels.append(_plt) return limit_labels
def add_limit(ax, limit_labels, E, Veffsr, n_stations, label, livetime=3 * units.year, linestyle='-', color='r', linewidth=3, band=False): """ add limit curve to limit plot """ E = np.array(E) Veffsr = np.array(Veffsr) if band: limit_lower = fluxes.get_limit_e2_flux( energy=E, veff_sr=Veffsr[0], livetime=livetime, signalEff=n_stations, energyBinsPerDecade=energyBinsPerDecade, upperLimOnEvents=2.44, nuCrsScn='ctw') limit_upper = fluxes.get_limit_e2_flux( energy=E, veff_sr=Veffsr[1], livetime=livetime, signalEff=n_stations, energyBinsPerDecade=energyBinsPerDecade, upperLimOnEvents=2.44, nuCrsScn='ctw') plt1 = ax.fill_between(E / plotUnitsEnergy, limit_upper / plotUnitsFlux, limit_lower / plotUnitsFlux, color=color, alpha=0.2) else: limit = fluxes.get_limit_e2_flux( energy=E, veff_sr=Veffsr, livetime=livetime, signalEff=n_stations, energyBinsPerDecade=energyBinsPerDecade, upperLimOnEvents=2.44, nuCrsScn='ctw') # _plt, = ax.plot(E/plotUnitsEnergy,limit/ plotUnitsFlux, linestyle=linestyle, color=color, # label="{2}: {0} stations, {1} years".format(n_stations,int(livetime/units.year),label), # linewidth=linewidth) _plt, = ax.plot(E / plotUnitsEnergy, limit / plotUnitsFlux, linestyle=linestyle, color=color, label="{1}: {0} years".format( int(livetime / units.year), label), linewidth=linewidth) limit_labels.append(_plt) return limit_labels
ax.annotate('Auger', xy=(1.1e8, 2.1e-7), xycoords='data', horizontalalignment='left', color='forestgreen', rotation=0) # Own limits limit_labels = [] if show_strawman_pa: for N in N_strawman_pa: strawman_limit_pa = fluxes.get_limit_e2_flux( energy=strawman_veff_pa[:, 0], veff=strawman_veff_pa[:, 1], livetime=livetime, signalEff=N, energyBinsPerDecade=energyBinsPerDecade, upperLimOnEvents=2.300, nuCrsScn='ctw') str_plt_pa, = ax.plot(strawman_veff_pa[:, 0] / plotUnitsEnergy, strawman_limit_pa / plotUnitsFlux, label="{2}: {0} stations, {1} years".format( N, int(livetime / units.year), strawman_pa_label), color='red', linewidth=3) limit_labels.append(str_plt_pa) if show_strawman: for N in N_strawman:
diffuse=True, show_grand_10k=False, show_grand_200k=False, show_Heinze=False, show_TA=False, show_ara=False, show_arianna=False, show_IceCubeGen2=False, shower_Auger=False) # limit_deep = fluxes.get_limit_e2_flux(energy=energies[1:]*units.eV, veff_sr= n_deep * data['dveff'][1:]*units.km**3*units.sr, livetime=livetime*uptime) # limit_shallow = fluxes.get_limit_e2_flux(energy=energies[1:]*units.eV, veff_sr= n_shallow * data['sveff'][1:]*units.km**3*units.sr, livetime=livetime*uptime) limit_combo = fluxes.get_limit_e2_flux( energy=energies * units.eV, veff_sr=((n_shallow * data['sveff'] * units.km**3 * units.sr) + (n_deep * data['dveff'] * units.km**3 * units.sr)) * (1 / (1 + data['o'])), livetime=livetime * uptime, upperLimOnEvents=1) # limit_gen2 = fluxes.get_limit_e2_flux(energy=optical_energies, veff_sr= optical_veffs, livetime=livetime*uptime) # limit_i3 = fluxes.get_limit_e2_flux(energy=icecube_energies, veff_sr= icecube_veffs/5, livetime=livetime*uptime) # limit_i3_prl = fluxes.get_limit_e2_flux(energy=icecube_prl_energies, veff_sr= icecube_prl_veff_sr, livetime=10*units.year) # limit_i3_prl_div3 = fluxes.get_limit_e2_flux(energy=icecube_prl_energies, veff_sr= icecube_prl_veff_sr/3, livetime=10*units.year) for i, j in zip(energies, limit_combo): print('{:e}, {:e}'.format(i / limits.plotUnitsEnergy, j / limits.plotUnitsFlux)) # ax.plot(np.power(10.,data['logE'][1:])/limits.plotUnitsEnergy, limit_shallow/limits.plotUnitsFlux, 'C1--', label='Shallow Only ({} sta, {} yrs, {}% uptime)'.format(n_shallow , livetime/units.year, uptime*100)) # ax.plot(np.power(10.,data['logE'][1:])/limits.plotUnitsEnergy, limit_deep/limits.plotUnitsFlux, 'C0--', label='Deep Only ({} sta, {} yrs, {}% uptime)'.format(n_deep , livetime/units.year, uptime*100)) ax.plot(np.power(10., data['logE']) / limits.plotUnitsEnergy,
det = 'review' deep_trigger = 'review' shallow_trigger = 'review' data_review = np.genfromtxt( f'results/veff_{det}_deeptrig_{deep_trigger}_shallowtrig_{shallow_trigger}_mode_hybridshallow.csv', delimiter=',', skip_header=1, names=[ 'logE', 'veff', 'dveff', 'sveff', 'coincveff', 'aeff', 'daeff', 'saeff', 'coincaeff', 'fdeep', 'fshallow', 'fcoinc' ]) energies = np.power(10., data_review['logE']) limit_review = fluxes.get_limit_e2_flux(energy=energies * units.eV, veff_sr=data_review['veff'] * units.km**3 * units.sr, livetime=livetime * uptime, upperLimOnEvents=1) ax.plot(energies / limits.plotUnitsEnergy, limit_review / limits.plotUnitsFlux, 'C4-', linewidth=3, label='{}, {} yrs, {}% uptime'.format(det, livetime / units.year, uptime * 100)) ax_veff[0].plot(energies, data_review['veff'], 'C4-', label='{}'.format(det)) review_aeff = [] for e, v in zip(energies * units.eV, data_review['veff'] * units.km**3 * units.sr): lint = cross_sections.get_interaction_length(float(e)) aeff_temp = v / lint