test.py

python file to plot some dEdN - Rodriguez Fernandez Gonzalo, 08/24/2015 11:01 AM

Download (1.89 KB)

 
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
    #for MX in [200,400,1000]:
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()