Exemple #1
0
def plot_dsigmadT_cns_systematic(nu_spec,
                                 nu_spec_2,
                                 site_str,
                                 plot_output_name,
                                 text_output_name,
                                 bounds=[1e-5, 1e-1],
                                 use_kev=False):
    if (use_kev):
        factor = 1.e3
    else:
        factor = 1.

    t_arr = np.logspace(0, 3, num=1000)

    fig3 = plt.figure()
    fig3.patch.set_facecolor('white')
    plt.ylim(bounds)
    plt.xlim(1e0 / factor, 1e3 / factor)
    zn_rates = dsigmadT_cns_rate(t_arr, 30, 35.38, nu_spec) * factor
    plt.loglog(t_arr / factor, zn_rates, 'b-', label='Zn, New', linewidth=2)
    zn_rates_2 = dsigmadT_cns_rate(t_arr, 30, 35.38, nu_spec_2) * factor
    plt.loglog(t_arr / factor, zn_rates_2, 'k:', label='Zn, Old', linewidth=2)
    ge_rates = dsigmadT_cns_rate(t_arr, 32, 72.64 - 32., nu_spec) * factor
    plt.loglog(t_arr / factor, ge_rates, 'r-', label='Ge, New', linewidth=2)
    ge_rates_2 = dsigmadT_cns_rate(t_arr, 32, 72.64 - 32., nu_spec_2) * factor
    plt.loglog(t_arr / factor, ge_rates_2, 'k-.', label='Ge, Old', linewidth=2)
    plt.legend(prop={'size': 11})
    if (use_kev):
        plt.xlabel('Recoil Energy T (keV)')
        plt.ylabel('Differential Event Rate (Events/kg/day/keV)')
    else:
        plt.xlabel('Recoil Energy T (eV)')
        plt.ylabel('Differential Event Rate (Events/kg/day/eV)')
    plt.title("%s Differential Rate, New vs Old Nu Flux" % site_str)
    plt.axvline(x=10.)
    plt.axvline(x=100.)
    plt.savefig(plot_output_name + ".png")
    fig3.clf()

    fig4 = plt.figure()
    fig3.patch.set_facecolor('white')
    plt.semilogx(t_arr, zn_rates / zn_rates_2, 'b-', label='Zn', linewidth=2)
    plt.semilogx(t_arr, ge_rates / ge_rates_2, 'r-', label='Ge', linewidth=2)
    if (use_kev):
        plt.xlabel('Recoil Energy T (keV)')
    else:
        plt.xlabel('Recoil Energy T (eV)')
    plt.ylabel('Ratio of New/Old Differential Rates')
    plt.title("%s Ratio of Differential Rates, New vs Old Nu Flux" % site_str)
    plt.legend(prop={'size': 11})
    plt.axvline(x=10.)
    plt.axvline(x=100.)
    plt.savefig(plot_output_name + "_ratio.png")
    fig4.clf()
Exemple #2
0
def plot_dsigmadT_cns_rate(nu_spec,
                           site_str,
                           plot_output_name,
                           text_output_name,
                           bounds=[1e-5, 1e-1],
                           use_kev=False):
    if (use_kev):
        factor = 1.e3
    else:
        factor = 1.

    t_arr = np.logspace(0, 3, num=1000)

    fig3 = plt.figure()
    fig3.patch.set_facecolor('white')
    plt.ylim(bounds)
    plt.xlim(1e0 / factor, 1e3 / factor)
    #plt.loglog(t_arr,dsigmadT_cns_rate(t_arr/factor, 14, 28.08-14, nu_spec)*factor,'g-',label='Si (A=28.1)',linewidth=2)
    zn_rates = dsigmadT_cns_rate(t_arr, 30, 35.38, nu_spec) * factor
    plt.loglog(t_arr / factor,
               zn_rates,
               'b-',
               label='Zn (A=64.4)',
               linewidth=2)
    ge_rates = dsigmadT_cns_rate(t_arr, 32, 72.64 - 32., nu_spec) * factor
    plt.loglog(t_arr / factor,
               ge_rates,
               'r-',
               label='Ge (A=72.6)',
               linewidth=2)
    #plt.loglog(t_arr/factor,dsigmadT_cns_rate_compound(t_arr, [13, 8], [26.982-13., 16.0-8.], [2, 3], nu_spec)*factor,'c-.',label='Al2O3 (A~20)',linewidth=2)
    #plt.loglog(t_arr/factor,dsigmadT_cns_rate_compound(t_arr, [20, 74, 8], [40.078-20., 183.84-74., 16.0-8.], [1, 1, 4], nu_spec)*factor,'m:',label='CaWO4 (A~48)',linewidth=2)
    plt.legend(prop={'size': 11})
    if (use_kev):
        plt.xlabel('Recoil Energy T (keV)')
        plt.ylabel('Differential Event Rate (Events/kg/day/keV)')
    else:
        plt.xlabel('Recoil Energy T (eV)')
        plt.ylabel('Differential Event Rate (Events/kg/day/eV)')
    plt.title("%s Differential Rate" % site_str)
    plt.axvline(x=10.)
    plt.axvline(x=100.)
    plt.savefig(plot_output_name)
    fig3.clf()

    np.savetxt(
        text_output_name,
        np.column_stack((t_arr, zn_rates, ge_rates)),
        header=
        "# Recoil Energy (eV), Zn Diff Rate (events/kg/day/eV), Ge Diff Rate (events/kg/day/eV)"
    )
Exemple #3
0
def plot_low_vs_high(nu_spec,
                     enu_low=1.8e6,
                     output_path_prefix="plots/lowe_1_8_diff_",
                     differential=True,
                     frac_interest=0.5):
    t_arr = np.logspace(0, 3, num=100)

    fig3 = plt.figure()
    fig3.patch.set_facecolor('white')
    if (differential):
        plt.loglog(t_arr,
                   dsigmadT_cns_rate(t_arr,
                                     30,
                                     35.38,
                                     nu_spec,
                                     enu_max=enu_low),
                   'b-',
                   label='Zn (A=64.4), enu<%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.loglog(t_arr,
                   dsigmadT_cns_rate(t_arr,
                                     30,
                                     35.38,
                                     nu_spec,
                                     enu_min=enu_low),
                   'b--',
                   label='Zn (A=64.4), enu>%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.loglog(t_arr,
                   dsigmadT_cns_rate(t_arr,
                                     32,
                                     72.64 - 32.,
                                     nu_spec,
                                     enu_max=enu_low),
                   'r-',
                   label='Ge (A=72.6), enu<%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.loglog(t_arr,
                   dsigmadT_cns_rate(t_arr,
                                     32,
                                     72.64 - 32.,
                                     nu_spec,
                                     enu_min=enu_low),
                   'r--',
                   label='Ge (A=72.6), enu>%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.legend(prop={'size': 11})
        plt.xlabel('Recoil Energy (eV)')
        plt.ylabel('Differential Event Rate (Events/kg/day/eV)')
        plt.title("ILL Differential Rate")
        plt.ylim(1e-4, 1e1)
    else:
        plt.loglog(t_arr,
                   total_cns_rate_an(t_arr, enu_low, 30, 35.38, nu_spec),
                   'b-',
                   label='Zn(A=64.4), enu<%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.loglog(t_arr,
                   total_cns_rate_an(t_arr,
                                     1.e7,
                                     30,
                                     35.38,
                                     nu_spec,
                                     enu_min=enu_low),
                   'b--',
                   label='Zn(A=64.4)), enu>%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.loglog(t_arr,
                   total_cns_rate_an(t_arr, enu_low, 32, 72.64 - 32., nu_spec),
                   'r-',
                   label='Ge (A=72.6), enu<%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.loglog(t_arr,
                   total_cns_rate_an(t_arr,
                                     1.e7,
                                     32,
                                     72.64 - 32.,
                                     nu_spec,
                                     enu_min=enu_low),
                   'r--',
                   label='Ge (A=72.6), enu>%.1f MeV' % (enu_low / 1.e6),
                   linewidth=2)
        plt.legend(prop={'size': 11})
        plt.xlabel('Recoil Threshold (eV)')
        plt.ylabel('Total Event Rate (Events/kg/day)')
        plt.title("ILL Total Rate")
        plt.ylim(1e-3, 1e3)
    plt.axvline(x=10.)
    plt.axvline(x=100.)
    plt.savefig(output_path_prefix + 'rate_low_vs_high_example.png')
    fig3.clf()

    Z_arr = [[30], [32]]
    N_arr = [[35.38], [72.64 - 32]]
    weights_arr = [[1], [1]]
    labels_arr = ["Zn (A=64.4)", "Ge (A=72.6)"]
    lines_arr = ['b-', 'r-']
    point_colors = ['k', 'k']

    plot_A_arr = []
    plot_threshold_arr = []

    t_arr = np.logspace(-2, 4, num=200)
    fig4 = plt.figure()
    fig4.patch.set_facecolor('white')

    for i in range(len(Z_arr)):
        A_sum = 0
        weight_sum = 0
        for j in range(len(Z_arr[i])):
            A_sum += (Z_arr[i][j] + N_arr[i][j]) * weights_arr[i][j]
            weight_sum += weights_arr[i][j]
        plot_A_arr.append(A_sum / weight_sum)

        if (differential):
            frac = dsigmadT_cns_rate_compound(t_arr, Z_arr[i], N_arr[i], weights_arr[i], nu_spec, enu_max=enu_low)/\
                   dsigmadT_cns_rate_compound(t_arr, Z_arr[i], N_arr[i], weights_arr[i], nu_spec)
        else:
            frac = total_cns_rate_an_compound(t_arr, enu_low, Z_arr[i], N_arr[i], weights_arr[i], nu_spec)/\
                   total_cns_rate_an_compound(t_arr, 1e7, Z_arr[i], N_arr[i], weights_arr[i], nu_spec)
        frac[np.isnan(frac)] = 0
        frac[frac > 1.] = 0  # It's a fraction, so it should be <1.0
        idx = np.argwhere(np.diff(np.sign(frac - frac_interest))).flatten()
        plot_threshold_arr.append(t_arr[idx[0]])
        plt.semilogx(t_arr,
                     frac,
                     lines_arr[i],
                     label=labels_arr[i],
                     linewidth=2)
        np.savetxt("results/ill_reactor_lt_1_8_total_fraction_%s.txt" %
                   labels_arr[i][:2],
                   np.column_stack((t_arr, frac)),
                   header="# T (eV), Fraction")
    plt.legend(prop={'size': 11})
    #plt.axhline(y=frac_interest)
    plt.ylim(0., 0.3)
    plt.xlim(1e0, 1e3)
    plt.xlabel('Recoil Energy (eV)')
    if (differential):
        plt.ylabel(
            'Differential Event Rate Fraction, enu<%.1f MeV Over Total' %
            (enu_low / 1.e6))
        plt.title(
            "Chooz Very Near Site (80 m) Differential Rate,  Fraction from enu<%.1f MeV"
            % (enu_low / 1.e6))
    else:
        plt.ylabel('Total Event Rate Fraction, enu<1.8 MeV Over Total')
        plt.title(
            "Chooz Very Near Site (80 m) Total Rate,  Fraction from enu<%.1f MeV"
            % (enu_low / 1.e6))

    plt.axvline(x=1.)
    plt.axvline(x=10.)
    plt.axvline(x=50.)
    plt.axvline(x=100.)
    plt.savefig(output_path_prefix + 'rate_low_vs_high_fraction.png')
    fig4.clf()

    fig = plt.figure()
    plt.scatter(plot_A_arr, plot_threshold_arr, color=point_colors)
    plt.xlabel("A")
    if (differential):
        plt.ylabel("Recoil Energy with %.1f%% of Enu<%.1f" %
                   ((frac_interest * 100), (enu_low / 1.e6)))
        plt.title("Recoil Energy for %.1f%% of Low Energy nu" %
                  (frac_interest * 100))
    else:
        plt.ylabel("Recoil Threshold with %.1f%% of Enu<%.1f" %
                   ((frac_interest * 100), (enu_low / 1.e6)))
        plt.title("Recoil Threshold for %.1f%% of Low Energy nu" %
                  (frac_interest * 100))
    plt.savefig(output_path_prefix + 'lowe_domination_threshold.png')
Exemple #4
0
def plot_cevns_bump_split(nu_spec, bump_fracs, cns_bounds):
    old_frac = nu_spec.bump_frac

    fig1, (a0, a1) = plt.subplots(2, 1,
                                  gridspec_kw={'height_ratios': [2, 1],})
    plt.subplots_adjust(bottom=0.075, top=0.95)
    fig1.patch.set_facecolor('white')
    fig1.set_figheight(9)
    lines_arr = ['b--', 'r-.', 'y:',
                 'c-', 'g--', 'm-.']

    #t_arr = np.logspace(0, 5, num=10000)
    t_arr = np.logspace(0, np.log10(3000), num=50)

    nu_spec.bump_frac = 0.
    spec_0 = dsigmadT_cns_rate(t_arr, 32, 72.64-32., nu_spec)
    a0.loglog(t_arr*1.e-3,spec_0*1.e3,'k-',linewidth=2)
    bump_specs = []
    for i in range(len(bump_fracs)):
        nu_spec.bump_frac = bump_fracs[i]
        spec_bump = dsigmadT_cns_rate(t_arr, 32, 72.64-32., nu_spec)
        bump_specs.append(spec_bump)
        a0.loglog(t_arr*1.e-3, spec_0*(1.-bump_fracs[i])*1.e3,
                  lines_arr[i],label="Non-Bump Spectrum",linewidth=2)
        a0.loglog(t_arr*1.e-3, (spec_bump-spec_0*(1.-bump_fracs[i]))*1.e3,
                  lines_arr[i][0]+'-',label="Bump Spectrum",linewidth=2)
        
    a0.set_ylim(cns_bounds)
    a0.set_xlim(1.e-3, 3.)
    a0.set(ylabel='Ge Differential Event Rate (dru)')
    a0.set_title("Ge Differential Rate at Chooz Reactor")
    a0.legend(prop={'size':11})
    a0.axvline(x=1.e-3, color='k', linestyle=":")
    a0.axvline(x=10.e-3, color='k', linestyle=":")
    a0.axvline(x=50.e-3, color='k', linestyle=":")

    a1.semilogx(t_arr*1.e-3, spec_0/spec_0, 'k-', label='No Distortion', linewidth=2)
    for i in range(len(bump_fracs)):
        spec_bump = bump_specs[i]
        a1.semilogx(t_arr*1.e-3,spec_bump/spec_0,
                 lines_arr[i],label="Bump=%.2f%%"%(100.*bump_fracs[i]),linewidth=2)
    a1.set_ylim(0.75, 1.25)
    a1.set_xlim(1.e-3, 3.)
    a1.legend(prop={'size':11})
    #plt.xlabel('Recoil Energy T (keV)')
    a1.set(xlabel='Recoil Energy T (keV)', ylabel='Ratio')
    a0.axvline(x=1.e-3, color='k', linestyle=":")
    a1.axvline(x=10.e-3, color='k', linestyle=":")
    a1.axvline(x=50.e-3, color='k', linestyle=":")

    '''axins = inset_axes(a0, width=3.5, height=2.5, loc=3,
                       bbox_to_anchor=(0.24, 0.3),
                       bbox_transform=a0.transAxes)
    axins.loglog(t_arr*1.e-3,spec_0*1.e3,'k-',label='No Distortion',linewidth=2)
    for i in range(len(bump_fracs)):
        spec_bump = bump_specs[i]
        axins.loglog(t_arr*1.e-3, spec_bump*1.e3,
                lines_arr[i],label="Bump=%.2f%%"%(100.*bump_fracs[i]),linewidth=2)
    axins.set_xlim(400., 1000.)
    axins.set_ylim(0., 0.02)'''

    plt.savefig('plots/reactor_bump_dsigmadT_split.png')

    nu_spec.bump_frac = old_frac
Exemple #5
0
def plot_cevns_bump(nu_spec, bump_fracs, cns_bounds):
    old_frac = nu_spec.bump_frac

    fig1, (a0, a1) = plt.subplots(2, 1,
                                  gridspec_kw={'height_ratios': [2, 1],})
    plt.subplots_adjust(bottom=0.075, top=0.95)
    fig1.patch.set_facecolor('white')
    fig1.set_figheight(8.5)
    lines_arr = ['b--', 'r-.', 'y:',
                 'c-', 'g--', 'm-.']

    #t_arr = np.linspace(0, 10000, num=10000)
    #t_arr = np.linspace(0, 10000, num=100)
    t_arr = np.logspace(0, 4, num=100)

    nu_spec.bump_frac = 0.
    spec_0 = dsigmadT_cns_rate(t_arr, 32, 72.64-32., nu_spec)
    a0.plot(t_arr*1.e-3,spec_0*1.e3,'k-',label='No Distortion',linewidth=2)
    bump_specs = []
    for i in range(len(bump_fracs)):
        nu_spec.bump_frac = bump_fracs[i]
        spec_bump = dsigmadT_cns_rate(t_arr, 32, 72.64-32., nu_spec)
        bump_specs.append(spec_bump)
        a0.plot(t_arr*1.e-3, spec_bump*1.e3,
                lines_arr[i],label="Bump=%.2f%%"%(100.*bump_fracs[i]),linewidth=2)
    a0.set_xlim(1.e-3, 3.)
    a0.set_xscale("log")
    a0.set_ylim(cns_bounds)
    a0.set_yscale("log")
    a0.set(ylabel='Ge Differential Event Rate (dru)')
    a0.set_title("Ge Differential Rate at Commercial Reactor")
    a0.axvline(x=1.e-3, color='k', linestyle=":")
    a0.axvline(x=10.e-3, color='k', linestyle=":")
    a0.axvline(x=50.e-3, color='k', linestyle=":")

    a1.plot(t_arr*1.e-3, spec_0/spec_0, 'k-', label='No Distortion', linewidth=2)
    for i in range(len(bump_fracs)):
        spec_bump = bump_specs[i]
        a1.plot(t_arr*1.e-3,spec_bump/spec_0,
                 lines_arr[i],label="Bump=%.2f%%"%(100.*bump_fracs[i]),linewidth=2)
    a1.set_xlim(1.e-3, 3.)
    a1.set_xscale("log")
    a1.set_ylim(0.75, 1.25)
    a1.legend(prop={'size':11})
    #plt.xlabel('Recoil Energy T (keV)')
    a1.set(xlabel='Recoil Energy T (keV)', ylabel='Ratio')
    a0.axvline(x=1.e-3, color='k', linestyle=":")
    a1.axvline(x=10.e-3, color='k', linestyle=":")
    a1.axvline(x=50.e-3, color='k', linestyle=":")

    axins = inset_axes(a0, width=3, height=2, loc=3,
                       bbox_to_anchor=(0.12, 0.075),
                       bbox_transform=a0.transAxes)
    axins.xaxis.set_major_locator(plt.MaxNLocator(1))
    axins.xaxis.set_minor_locator(plt.MaxNLocator(1))
    axins.plot(t_arr*1.e-3,spec_0*1.e3,'k-',label='No Distortion',linewidth=2)
    for i in range(len(bump_fracs)):
        spec_bump = bump_specs[i]
        axins.plot(t_arr*1.e-3, spec_bump*1.e3,
                   lines_arr[i],label="Bump=%.2f%%"%(100.*bump_fracs[i]),linewidth=2)
    zoom_lb = 0.4
    zoom_ub = 1.2
    axins.set_xlim(zoom_lb, zoom_ub)
    axins.set_xscale("log")
    axins.set_ylim(2.e-1, 2.e1)
    axins.set_yscale("log")

    # On all plots, shade in the zoomed region
    x_fill = np.array([zoom_lb, zoom_ub])
    a0.fill_between(x_fill, -10, 1.e13,
                    color='lightgrey')
    a1.fill_between(x_fill, -10, 1.e13,
                    color='lightgrey')

    plt.savefig('plots/reactor_bump_dsigmadT.png')

    nu_spec.bump_frac = old_frac