In [2]:
import numpy as np
import matplotlib.pyplot as plt
import math
from scipy import interpolate as interp
In [3]:
def linear_translate(x1,x2,X1,X2):
B=(X1-X2)/(x1-x2)
A=X1-B*x1
return [A,B]
def linear_translate_axis(Ax,Bx,arr):
return Ax+Bx*arr
def log_translate_axis(Ax,Bx,arr):
return 10**(Ax+Bx*arr)
def log_translate(x1,x2,X1,X2):
B=np.log10(float(X1)/float(X2))/(x1-x2)
A=np.log10(X1)-B*x1
return [A,B]
def format_xml_arr(arr):
for i in range(1,len(arr)):
arr[i]+=arr[i-1]
def log_translate_arr(Ax,Bx,Ay,By,arr):
return 10**([Ax,Ay]+[Bx,By]*arr)
In [4]:
def format_xml_file(file):
arr=[[0,0]]
with open(file) as f:
dat=f.read().splitlines()
hold=''
delete_list=[0]
for i in range(0,len(dat)):
dat[i]=dat[i].split(',')
#print(arr[-1],dat[i],hold)
if dat[i][0].isalpha():
hold=dat[i][0]
else:
if hold=='M':
arr.append([float(dat[i][0]),float(dat[i][1])])
elif hold=='m' or hold=='l':
arr.append([arr[-1][0]+float(dat[i][0]),arr[-1][1]+float(dat[i][1])])
elif hold=='H':
arr.append([float(dat[i][0]),arr[-1][1]])
elif hold=='h':
arr.append([arr[-1][0]+float(dat[i][0]),arr[-1][1]])
elif hold=='V':
arr.append([arr[-1][0],float(dat[i][0])])
elif hold=='v':
arr.append([arr[-1][0],arr[-1][1]+float(dat[i][0])])
del arr[0]
return arr
In [5]:
def format_xml(file_in,file_out):
a=format_xml_file(file_in)
b=np.array(a)
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
c=log_translate_arr(Ax,Bx,Ay,By,b)
np.savetxt(file_out,c)
In [5]:
fp_in="vector_portal_visible_raw/"
fp_out="vector_portal_visible_formatted/"
In [11]:
x1=102.117;x2=403.91;X1=1e-2;X2=1;
y1=211.11;y2=98.4858;Y1=1e-3;Y2=2e-4;
In [22]:
format_xml(fp_in+"BES3_1705.04265.dat",fp_out+"BES3_2017_formatted.dat")
In [14]:
format_xml(fp_in+"APEX1108.2750.dat",fp_out+"APEX2011_formatted.dat")
In [6]:
#1906.00176
x1=275.6694;x2=234.62337;X1=1;X2=1e-1;
y1=59.555832;y2=130.28009;Y1=1e-5;Y2=1e-4;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
NA64_2019=np.array(format_xml_file("NA64_2019_1906.00176.dat"))
NA64_2019[:,0]=log_translate_axis(Ax,Bx,NA64_2019[:,0])
NA64_2019[:,1]=log_translate_axis(Ay,By,NA64_2019[:,1])
np.savetxt("NA64_2019_formatted.dat",NA64_2019)
In [6]:
#1906.00176
x1=145.30411;x2=234.62337;X1=1e-2;X2=1e-1;
y1=96.63295;y2=67.436142;Y1=1e-13;Y2=1e-14;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
NA64_2019=np.array(format_xml_file("NA64_2019_1906.00176_2.dat"))
NA64_2019[:,0]=log_translate_axis(Ax,Bx,NA64_2019[:,0])
NA64_2019[:,1]=log_translate_axis(Ay,By,NA64_2019[:,1])
np.savetxt("NA64_2019_aD0.5_formatted.dat",NA64_2019)
In [7]:
#1807.05884.dat
x1=138.435;x2=376.021;X1=1e-2;X2=1e-1;
y1=90.8576;y2=178.355;Y1=1e-14;Y2=1e-12;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
E137_u=np.array(format_xml_file("E1371807.05884.dat"))
E137_u[:,0]=log_translate_axis(Ax,Bx,E137_u[:,0])
E137_u[:,1]=log_translate_axis(Ay,By,E137_u[:,1])
np.savetxt("E137update_Y3_0.5.dat",E137_u)
In [66]:
#1311.0216
x1=1452.5;x2=4420;X1=0.1;X2=0.5;
y1=2427.5;y2=3237.5;Y1=1e-4;Y2=1e-3;
Ax,Bx=linear_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
hadesa=np.array(format_xml_file(fp_in+"HADES1311.0216.dat"))
hadesb=np.array(format_xml_file(fp_in+"HADES1311.0216b.dat"))
hadesc=np.array(format_xml_file(fp_in+"HADES1311.0216c.dat"))
hadesd=np.array(format_xml_file(fp_in+"HADES1311.0216d.dat"))
hades=np.concatenate((hadesa,hadesb,hadesc,hadesd),axis=0)
hades[:,0]=linear_translate_axis(Ax,Bx,hades[:,0])
hades[:,1]=log_translate_axis(Ay,By,hades[:,1])
hades[:,1]=[math.sqrt(y) for y in hades[:,1]]
np.savetxt(fp_out+"HADES2013_formatted.dat",hades)
In [46]:
#1409.0851
x1=100.501;x2=489.907;X1=10;X2=90;
y1=309.828;y2=91.8798;Y1=1e-5;Y2=1e-6;
Ax,Bx=linear_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
phenix=np.array(format_xml_file(fp_in+"PHENIX1409.0851.dat"))
phenix[:,0]=linear_translate_axis(Ax,Bx,phenix[:,0])/1000
phenix[:,1]=log_translate_axis(Ay,By,phenix[:,1])
phenix[:,1]=[math.sqrt(y) for y in phenix[:,1]]
np.savetxt(fp_out+"PHENIX2014_formatted.dat",phenix)
In [44]:
#1304.0671
x1=2152.5;x2=4772.5;X1=40;X2=100;
y1=2220;y2=3805;Y1=1e-5;Y2=1e-4;
Ax,Bx=linear_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
wasa=np.array(format_xml_file(fp_in+"WASA1304.0671.dat"))
wasa[:,0]=linear_translate_axis(Ax,Bx,wasa[:,0])/1000
wasa[:,1]=log_translate_axis(Ay,By,wasa[:,1])
wasa[:,1]=[math.sqrt(y) for y in wasa[:,1]]
np.savetxt(fp_out+"WASA2013_formatted.dat",wasa)
In [18]:
#1404.5502
x1=906.883;x2=2133.43;X1=100;X2=300;
y1=1421.71;y2=821.906;Y1=1e-5;Y2=1e-6;
Ax,Bx=linear_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
a1=format_xml_file(fp_in+"A1_1404.5502.dat")
a1=np.array(a1)
a1[:,0]=linear_translate_axis(Ax,Bx,a1[:,0])/1000
a1[:,1]=log_translate_axis(Ay,By,a1[:,1])
a1[:,1]=[math.sqrt(y) for y in a1[:,1]]
np.savetxt(fp_out+"A12014_formatted.dat",a1)
In [11]:
#0906.0580v1
x1=154.293;x2=277.429;X1=1e-2;X2=1;
y1=96.251;y2=208.027;Y1=1e-4;Y2=1e-8;
format_xml(fp_in+"E774_0906.0580.dat",fp_out+"E774_formatted.dat")
format_xml(fp_in+"E141_0906.0580.dat",fp_out+"E141_formatted.dat")
format_xml(fp_in+"E137_0906.0580.dat",fp_out+"E137_formatted.dat")
In [32]:
1504.00607
x1=1375;x2=4242.5;X1=10;X2=100;
y1=4020;y2=2405;Y1=1e-5;Y2=1e-6
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
na48=format_xml_file(fp_in+"NA482_1504.00607.dat")
na48=np.array(na48)
na48=log_translate_arr(Ax,Bx,Ay,By,na48)
na48[:,0]=na48[:,0]/1000
na48[:,1]=[math.sqrt(y) for y in na48[:,1]]
np.savetxt(fp_out+"NA48_2_formatted.dat",na48)
In [7]:
#1406.2980
x1=250.888;x2=400.15;X1=1e-1;X2=1;
y1=211.11;y2=98.4858;Y1=1e-3;Y2=2e-4;
format_xml(fp_in+"babar1406.2980.dat",fp_out+"Babar2014_formatted.dat")
format_xml(fp_in+"babar0905.4539.dat",fp_out+"babar2009_formatted.dat")
In [41]:
#1509.00740
x1=96.3223;x2=151.6556;X1=10;X2=100;
y1=107.91647;y2=35.94388;Y1=1e-5;Y2=1e-7;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
kloe2015=np.array(format_xml_file(fp_in+"KLOE1509.00740.dat"))
kloe2015=log_translate_arr(Ax,Bx,Ay,By,kloe2015)
kloe2015[:,0]=kloe2015[:,0]/1000
kloe2015[:,1]=[math.sqrt(y) for y in kloe2015[:,1]]
np.savetxt(fp_out+"KLOE2015_formatted.dat",kloe2015)
kloe2013=np.array(format_xml_file(fp_in+"KLOE1110.0411.dat"))
kloe2013=log_translate_arr(Ax,Bx,Ay,By,kloe2013)
kloe2013[:,0]=kloe2013[:,0]/1000
kloe2013[:,1]=[math.sqrt(y) for y in kloe2013[:,1]]
np.savetxt(fp_out+"KLOE2013_formatted.dat",kloe2013)
kloe2014=np.array(format_xml_file(fp_in+"KLOE1404.7772.dat"))
kloe2014=log_translate_arr(Ax,Bx,Ay,By,kloe2014)
kloe2014[:,0]=kloe2014[:,0]/1000
kloe2014[:,1]=[math.sqrt(y) for y in kloe2014[:,1]]
np.savetxt(fp_out+"KLOE2014_formatted.dat",kloe2014)
In [43]:
#1603.06086
x1=0;x2=38.89273;X1=0;X2=200;
y1=-376.57767;y2=-215.18724;Y1=1e-7;Y2=1e-4;
Ax,Bx=linear_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
kloe2016=np.array(format_xml_file(fp_in+"KLOE1603.06086.dat"))
kloe2016[:,0]=linear_translate_axis(Ax,Bx,kloe2016[:,0])/1000
kloe2016[:,1]=log_translate_axis(Ay,By,kloe2016[:,1])
kloe2016[:,1]=[math.sqrt(y) for y in kloe2016[:,1]]
np.savetxt(fp_out+"KLOE2016_formatted.dat",kloe2016)
In [3]:
xenon10e=np.loadtxt("xenon10e.dat",delimiter=',')
format_xml_arr(xenon10e)
x1=159; x2=217; X1=0.010; X2=0.100
y1=36; y2=83; Y1=1e-34; Y2=1e-36
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
xenon10e=log_translate_arr(Ax,Bx,Ay,By,xenon10e)
In [66]:
np.savetxt("xenon10e_formatted.csv",xenon10e,delimiter=',')
In [13]:
#1703.00910
#This is FDM=1 case, Xenon10. It basically beats Xenon100 everywhere.
xenon10e2017=np.loadtxt("1703.00910.xenonelimits.dat",delimiter=',')
format_xml_arr(xenon10e2017)
x1=93.305; x2=195.719; X1=0.010; X2=0.100
y1=86.695; y2=151.848; Y1=1e-38; Y2=1e-37
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
xenon10e2017=log_translate_arr(Ax,Bx,Ay,By,xenon10e2017)
xenon100e2017=np.loadtxt("1703.00910.xenon100elimits.dat",delimiter=',')
format_xml_arr(xenon100e2017)
xenon100e2017=log_translate_arr(Ax,Bx,Ay,By,xenon100e2017)
In [15]:
np.savetxt("xenon10e_2017_formatted.csv",xenon10e2017,delimiter=',')
np.savetxt("xenon100e_2017_formatted.csv",xenon100e2017,delimiter=',')
In [15]:
babar2017=np.loadtxt("babar2017.dat",delimiter=',')
format_xml_arr(babar2017)
y1=211.843; y2=50.1547; Y1=1e-3; Y2=1e-4;
x1=181.417; x2=430.866; X1=1e-2; X2=1.0
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
babar2017_formatted=log_translate_arr(Ax,Bx,Ay,By,babar2017)
In [17]:
np.savetxt("babar2017_formatted.dat",babar2017_formatted,delimiter=' ')
In [5]:
NA64_2016 = np.loadtxt("NA64_2016_data.dat",delimiter=',')
format_xml_arr(NA64_2016)
NA64_2017 = np.loadtxt("NA64_2017_data.dat",delimiter=',')
format_xml_arr(NA64_2017)
NA64_2018 = np.loadtxt("NA64_2018plus_data.dat",delimiter=',')
format_xml_arr(NA64_2018)
y1=186.935;y2=105.657;Y1=1e-4;Y2=2e-5;
x1=202.677;x2=314.646;X1=1e-2;X2=1e-1;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
NA64_2016_formatted=log_translate_arr(Ax,Bx,Ay,By,NA64_2016)
NA64_2017_formatted=log_translate_arr(Ax,Bx,Ay,By,NA64_2017)
NA64_2018_formatted=log_translate_arr(Ax,Bx,Ay,By,NA64_2018)
In [1]:
In [6]:
np.savetxt("NA64_2016_formatted.dat",NA64_2016_formatted,delimiter=' ')
np.savetxt("NA64_2017_formatted.dat",NA64_2017_formatted,delimiter=' ')
np.savetxt("NA64_2018_formatted.dat",NA64_2018_formatted,delimiter=' ')
In [5]:
anomalon_1705_06726= np.loadtxt("Anomalon.dat",delimiter=',')
format_xml_arr(anomalon_1705_06726)
BtoKX_1705_06726= np.loadtxt("1705.06726.BtoKX.dat",delimiter=',')
format_xml_arr(BtoKX_1705_06726)
ZtogammaX_1705_06726= np.loadtxt("1705.06726.ZtogammaX.dat",delimiter=',')
format_xml_arr(ZtogammaX_1705_06726)
KtopiX_1705_06726= np.loadtxt("1705.06726.KtopiX.dat",delimiter=',')
format_xml_arr(KtopiX_1705_06726)
y1=389.711;y2=188.273;Y1=10**-2;Y2=10**-5;
x1=272.109;x2=478.285;X1=10**-2;X2=1;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
anomalon_1705_06726_formatted=log_translate_arr(Ax,Bx,Ay,By,anomalon_1705_06726)
BtoKX_1705_06726_formatted=log_translate_arr(Ax,Bx,Ay,By,BtoKX_1705_06726)
ZtogammaX_1705_06726_formatted=log_translate_arr(Ax,Bx,Ay,By,ZtogammaX_1705_06726)
KtopiX_1705_06726_formatted=log_translate_arr(Ax,Bx,Ay,By,KtopiX_1705_06726)
In [7]:
np.savetxt("Anomalon_formatted.dat",anomalon_1705_06726_formatted,delimiter=' ')
np.savetxt("1705.06726.BtoKX_formatted.dat",BtoKX_1705_06726_formatted,delimiter=' ')
np.savetxt("1705.06726.ZtogammaX_formatted.dat",ZtogammaX_1705_06726_formatted,delimiter=' ')
np.savetxt("1705.06726.KtopiX_formatted.dat",KtopiX_1705_06726_formatted,delimiter=' ')
In [9]:
anomalon_1705_06726_formatted[:,1]**2
Out[9]:
In [7]:
NA64_2018 = np.loadtxt("NA64_2018.dat",delimiter=',')
format_xml_arr(NA64_2018)
x1=125.29126;x2=200.49438;X1=1e-2;X2=1e-1;
y1=116.07875;y2=193.88962;Y1=1e-4;Y2=1e-3;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
NA64_2018_formatted = log_translate_arr(Ax,Bx,Ay,By,NA64_2018)
np.savetxt("NA64_2017_formatted.dat",NA64_2018_formatted,delimiter=' ')
In [99]:
CDMSelec = np.loadtxt("1804.10697.SuperCDMS.dat",delimiter=',')
format_xml_arr(CDMSelec)
x1=105.82982;x2=259.22375;X1=1e-3;X2=100e-3
y1=264.07059;y2=80.258824;Y1=1e-27;Y2=1e-41
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
CDMSelec_2018_formatted=log_translate_arr(Ax,Bx,Ay,By,CDMSelec)
np.savetxt("CDMS_electron_2018_formatted.dat",CDMSelec_2018_formatted,delimiter=' ')
In [100]:
SENSEI2018_1=np.loadtxt("SENSEI2018_1.dat",delimiter=',')
SENSEI2018_2=np.loadtxt("SENSEI2018_2.dat",delimiter=',')
SENSEI2018_3=np.loadtxt("SENSEI2018_3.dat",delimiter=',')
SENSEI2018_4=np.loadtxt("SENSEI2018_4.dat",delimiter=',')
SENSEI2018=[SENSEI2018_1,SENSEI2018_2,SENSEI2018_3,SENSEI2018_4]
for arr in SENSEI2018:
format_xml_arr(arr)
x_set=np.unique(np.append(np.append(np.append(SENSEI2018[0][:,0],SENSEI2018[1][:,0]),
SENSEI2018[2][:,0]),SENSEI2018[3][:,0]))
interp_arr = [interp.interp1d(arr[:,0],arr[:,1],bounds_error=False,fill_value=10000) for arr in SENSEI2018]
x_set=[x for x in x_set]
SENSEI2018f=np.array([[x,min([func(x) for func in interp_arr]).tolist()] for x in x_set])
x1=104.473;x2=192.09;X1=1e-3;X2=10e-3;
y1=347.496;y2=318.992;Y1=1e-28;Y2=1e-29;
Ax,Bx=log_translate(x1,x2,X1,X2)
Ay,By=log_translate(y1,y2,Y1,Y2)
SENSEI2018_formatted=log_translate_arr(Ax,Bx,Ay,By,SENSEI2018f)
np.savetxt("SENSEI2018_formatted.dat",SENSEI2018_formatted,delimiter=' ')
In [86]:
interp_arr[0](1)
Out[86]:
In [92]:
SENSEI2018f
Out[92]:
In [78]:
x_set
Out[78]:
In [60]:
SENSEI2018f=[[x[0],min([func(x) for func in interp_arr])[0]] for x in x_set]
In [55]:
x_set=map(np.unique,sorted(np.append(np.append(np.append(SENSEI2018[0][:,0],SENSEI2018[1][:,0]),
SENSEI2018[2][:,0]),SENSEI2018[3][:,0])))
In [44]:
SENSEI2018
Out[44]:
In [18]:
interp.interp1d(SENSEI2018[0]
Out[18]:
In [27]:
sorted(np.append(np.append(np.append(SENSEI2018[0][:,0],SENSEI2018[1][:,0]),SENSEI2018[2][:,0]),SENSEI2018[3][:,0]))
Out[27]:
In [ ]: