limits_O[10]+= [{"data": g10n_M3q**2 * p.mWeak**4, "mchi": M3_mchi, "label": r"$\overline{\chi}\chi\overline{q}\gamma_5 q$ (Tevatron)"} ,{"data": g10n_M9G**2 * p.mWeak**4, "mchi": M9_mchi, "label": r"$\overline{\chi}\chi G \tilde{G}$ (Tevatron)"}] #========================================= # Automated extraction of estimated Xenon100 limits in all EFT couplings excluded = [0,2] for i in range(Nops): if i not in excluded: print "=== Extracting estimated Xenon100 225 live day limit for operator {0} ===".format(i) Xenon100_est_EFT_lim = tools.get_c_curve("c{0}p=c{0}n".format(i)) #equal proton/neutron couplings Xenon100_est_EFT_lim_n = tools.get_c_curve("c{0}n".format(i)) #neutron-only couplings limits_O[i] += [{"data" : np.array(Xenon100_est_EFT_lim)**2, "mchi" : tools.masses, "label": "Xenon100 N={0} EFT (c{1}p=c{1}n)".format(tools.Nevents,i)} ,{"data" : np.array(Xenon100_est_EFT_lim_n)**2, "mchi" : tools.masses, "label": "Xenon100 N={0} EFT (c{1}n)".format(tools.Nevents,i)}] # Automated plotting of various limits in all EFT couplings def add_curve(ax,datadict): ax.plot( datadict["mchi"] , datadict["data"] , label=datadict["label"] , lw=2)
# the same M*, i.e. mediator mass / coupling, for each effecting operator, so # maybe ok. g10p_M3q = t.calc_cN_pseudoscalar(g3u_limit,g3d_limit,g3s_limit,g3c_limit,g3b_limit,g3t_limit,0,p.data_p) g10n_M3q = t.calc_cN_pseudoscalar(g3u_limit,g3d_limit,g3s_limit,g3c_limit,g3b_limit,g3t_limit,0,p.data_n) g10p_M9G = t.calc_cN_pseudoscalar(0,0,0,0,0,0,g9G_limit,p.data_p) g10n_M9G = t.calc_cN_pseudoscalar(0,0,0,0,0,0,g9G_limit,p.data_n) #========================================= # Get SI XENON100 225 live day limits (1207.5988) mX225, sigmaSI_X225 = np.loadtxt("goodman_limits_data/xenon225livedays.csv",delimiter=",").T sigmaSI_X225 = 10**sigmaSI_X225 # data in file is in log10 units # Compare to SI XENON100 estimated limits via EFT: c1_lim_XENON100 = tools.get_c_curve("c1p=c1n") # SI operator, equal proton/neutron couplings c1n_lim_XENON100 = tools.get_c_curve("c1n") # SI operator, neutron only couplings c1p_lim_XENON100 = tools.get_c_curve("c1p") # SI operator, neutron only couplings # Convert to/from sigma_SD (in cm^-2) # WIMP-nucleon couplings squared g1nsq_M1q = g1n_M1q**2 g1nsq_M7G = g1n_M7G**2 g1sq_limEFT = np.array(c1_lim_XENON100)**2 * p.mWeak**-4 g1nsq_limEFT = np.array(c1n_lim_XENON100)**2 * p.mWeak**-4 g1psq_limEFT = np.array(c1p_lim_XENON100)**2 * p.mWeak**-4 g1sq_X225 = sigmaSI_X225 / t.gsq_to_sigma(mX225,1) # cross sections sigmaSI_M1q = g1nsq_M1q * t.gsq_to_sigma(M1_mchi,1)