Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
    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:
Пример #5
0
                                     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,
Пример #6
0
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