1
|
from __future__ import division
|
2
|
import numpy as np
|
3
|
from matplotlib import pyplot as plt
|
4
|
import os,sys
|
5
|
|
6
|
dmfit_info={"OLD":("fortran_save2/gammamc_dif.dat",np.array([10, 25, 50, 80.3, 91.2, 100, 150, 176, 200, 250, 350, 500, 750, 1000, 1500, 2000, 3000, 5000]),250/10/np.log(10)),
|
7
|
"NEW":("../../data/gammamc_dif.dat",np.array([2,4,6,8,10, 25, 50, 80.3, 91.2, 100, 150, 176, 200, 250, 350, 500, 750, 1000, 1500, 2000, 3000, 5000, 7000, 10000]),1.)}
|
8
|
|
9
|
channels={"1":"e+e-","2":"mu+mu-","3":"tau+tau-","4":"b bbar","5":"t tbar","6":"gg","7":"W+W-","8":"ZZ","9":"c cbar","10":"s sbar","11":"u ubar","12":"d dbar"}
|
10
|
|
11
|
def energies(MX):
|
12
|
z=(np.arange(0,250)+0.5)/250.
|
13
|
return MX*np.power(10.,10.*(z-1.))
|
14
|
|
15
|
def logE_MX(MX):
|
16
|
z=(np.arange(0,250)+0.5)/250.
|
17
|
return 10.*(z-1.)
|
18
|
|
19
|
def readTable(MX, CH,dmfit="NEW"):
|
20
|
filename,masses,cst=dmfit_info[dmfit]
|
21
|
gammadiff=np.loadtxt(filename)
|
22
|
if CH==1:
|
23
|
chref=9
|
24
|
elif CH==2:
|
25
|
chref=7
|
26
|
elif CH==3:
|
27
|
chref=4
|
28
|
elif CH==4:
|
29
|
chref=2
|
30
|
elif CH==5:
|
31
|
chref=3
|
32
|
elif CH==6:
|
33
|
chref=8
|
34
|
elif CH==7:
|
35
|
chref=5
|
36
|
elif CH==8:
|
37
|
chref=6
|
38
|
elif CH==9:
|
39
|
chref=1
|
40
|
elif CH in [10,11,12]:
|
41
|
chref=CH
|
42
|
idx=np.where(masses<=MX)[0][-1]
|
43
|
offset = (chref-1)*len(masses)+idx
|
44
|
print idx, offset, len(masses)
|
45
|
return offset,gammadiff[offset]*cst
|
46
|
|
47
|
|
48
|
if __name__ == "__main__":
|
49
|
filename,masses,cst=dmfit_info[sys.argv[1]]
|
50
|
gammadiff=np.loadtxt(filename)
|
51
|
|
52
|
MX=80000
|
53
|
CH=int(sys.argv[2])
|
54
|
|
55
|
for CH in [4,3,2]:
|
56
|
off,ednde=readTable(MX,CH)
|
57
|
energies=MX*10**logE_MX(MX)
|
58
|
if np.any(ednde>0):
|
59
|
plt.loglog(energies[energies>0.1],ednde[energies>0.1]/energies[energies>0.1],label="CH=%s"%channels[str(CH)])
|
60
|
|
61
|
plt.title("MX : %d"%MX)
|
62
|
plt.xlabel("E [GeV]")
|
63
|
plt.ylabel("dN/dE [per annihilation]")
|
64
|
plt.legend()
|
65
|
plt.show()
|