Commit 49a0fe942494fb53065d7e98f23c24c248dae50f
1 parent
6633967c
Exists in
master
Add direct printing of the maps in Analysis.py
Showing
7 changed files
with
91 additions
and
86 deletions
Show diff stats
Analysis.py
@@ -3,12 +3,15 @@ | @@ -3,12 +3,15 @@ | ||
3 | from sys import argv | 3 | from sys import argv |
4 | from numpy import append, savetxt, shape, array, newaxis, zeros, arange | 4 | from numpy import append, savetxt, shape, array, newaxis, zeros, arange |
5 | from Modules.Read import ReadEnergy, ReadTime, ReadExtraFile, ReadProfile | 5 | from Modules.Read import ReadEnergy, ReadTime, ReadExtraFile, ReadProfile |
6 | +from Modules.Read import ReadMomentumAngle, ReadPositionAngle, resultDirectory | ||
6 | from Modules.Spectrum import spectrum | 7 | from Modules.Spectrum import spectrum |
8 | +from Modules.Map import printMap, isotrop | ||
7 | from Modules.Angle import radial, angle_vs_energy | 9 | from Modules.Angle import radial, angle_vs_energy |
8 | from Modules.Timing import timing | 10 | from Modules.Timing import timing |
11 | +from Modules.Constants import degre | ||
9 | 12 | ||
10 | -def InProgress(fileId,i,Nmax): | ||
11 | - print "Work on ", fileId, ": ", (i*100)/Nmax, "% done" | 13 | +def InProgress(fileId,step,i,Nmax): |
14 | + print "Work on ", fileId, "(step "+ step +": ", (i*100)/Nmax, "% done" | ||
12 | 15 | ||
13 | if shape(argv)[0] < 2: | 16 | if shape(argv)[0] < 2: |
14 | print "not enough arguments (at least 1)" | 17 | print "not enough arguments (at least 1)" |
@@ -17,8 +20,10 @@ if shape(argv)[0] < 2: | @@ -17,8 +20,10 @@ if shape(argv)[0] < 2: | ||
17 | #================================================================# | 20 | #================================================================# |
18 | # Parameters | 21 | # Parameters |
19 | #================================================================# | 22 | #================================================================# |
20 | -folder = "Results/" | ||
21 | PowerSpectrum=[1,1.5,2,2.5] | 23 | PowerSpectrum=[1,1.5,2,2.5] |
24 | +powerlaw_index = 2 | ||
25 | +Elim = 1e-1 # GeV | ||
26 | +thetalim = 20 # degre | ||
22 | 27 | ||
23 | for fileId in argv[1:]: | 28 | for fileId in argv[1:]: |
24 | # read files | 29 | # read files |
@@ -27,16 +32,24 @@ for fileId in argv[1:]: | @@ -27,16 +32,24 @@ for fileId in argv[1:]: | ||
27 | weightini, generation, theta_arrival, Esource = ReadExtraFile(fileId,[2,3,4,5]) | 32 | weightini, generation, theta_arrival, Esource = ReadExtraFile(fileId,[2,3,4,5]) |
28 | nbPhotonsEmitted=ReadProfile(fileId,[3]) | 33 | nbPhotonsEmitted=ReadProfile(fileId,[3]) |
29 | 34 | ||
30 | - lim =100000 | ||
31 | - time=time[:lim] | ||
32 | - energy=energy[:lim] | ||
33 | - weightini=weightini[:lim] | ||
34 | - generation = generation[:lim] | ||
35 | - theta_arrival = theta_arrival[:lim] | ||
36 | - Esource=Esource[:lim] | ||
37 | - | ||
38 | - cond = (generation==0) | ||
39 | - test=energy[cond]/Esource[cond] | 35 | + #=============================================================================# |
36 | + # IMAGING | ||
37 | + #=============================================================================# | ||
38 | + thetaDir,phiDir = ReadMomentumAngle(fileId)*degre | ||
39 | + thetaPos,phiPos = ReadPositionAngle(fileId)*degre | ||
40 | + theta = thetaDir - thetaPos | ||
41 | + phi = phiDir -phiPos | ||
42 | + | ||
43 | + # apply source spectrum | ||
44 | + weight_source = (Esource/min(Esource))**(1-powerlaw_index) | ||
45 | + weight = weightini* weight_source | ||
46 | + | ||
47 | + # apply selection | ||
48 | + cond=(energy>Elim) & (abs(theta)<thetalim) & (abs(phi)<thetalim) | ||
49 | + weight=weight[cond] | ||
50 | + theta=theta[cond] | ||
51 | + phi=phi[cond] | ||
52 | + printMap(theta,phi,weight,fileId,source=isotrop(),borne=[thetalim,thetalim]) | ||
40 | 53 | ||
41 | Gen_contrib = [] | 54 | Gen_contrib = [] |
42 | Gen_cont = zeros((int(max(generation))+1)) | 55 | Gen_cont = zeros((int(max(generation))+1)) |
@@ -48,14 +61,9 @@ for fileId in argv[1:]: | @@ -48,14 +61,9 @@ for fileId in argv[1:]: | ||
48 | 61 | ||
49 | for powerlaw_index in PowerSpectrum: | 62 | for powerlaw_index in PowerSpectrum: |
50 | # apply source spectrum | 63 | # apply source spectrum |
51 | - weight_source = Esource**(1-powerlaw_index) | 64 | + weight_source = (Esource/min(Esource))**(1-powerlaw_index) |
52 | weight = weightini* weight_source | 65 | weight = weightini* weight_source |
53 | 66 | ||
54 | - print "%e" %(max(weight_source)/min(weight_source)) | ||
55 | - | ||
56 | - #cond = (energy>95) & (energy<105) & (generation==0) | ||
57 | - #print weightini[cond], weight[cond] | ||
58 | - | ||
59 | #=============================================================================# | 67 | #=============================================================================# |
60 | # GENERATION CONTRIBUTION | 68 | # GENERATION CONTRIBUTION |
61 | #=============================================================================# | 69 | #=============================================================================# |
@@ -73,8 +81,7 @@ for fileId in argv[1:]: | @@ -73,8 +81,7 @@ for fileId in argv[1:]: | ||
73 | nbBins = 100 | 81 | nbBins = 100 |
74 | # draw source spectrum | 82 | # draw source spectrum |
75 | Es=array(list(set(Esource))) | 83 | Es=array(list(set(Esource))) |
76 | - print shape(Es) | ||
77 | - Ws= (Es)**(1-powerlaw_index) | 84 | + Ws= (Es/min(Es))**(1-powerlaw_index) |
78 | Es,Fs = spectrum(Es,Ws,nbBins=nbBins) | 85 | Es,Fs = spectrum(Es,Ws,nbBins=nbBins) |
79 | Es=Es[:,newaxis] | 86 | Es=Es[:,newaxis] |
80 | Fs=Fs[:,newaxis] | 87 | Fs=Fs[:,newaxis] |
@@ -132,11 +139,11 @@ for fileId in argv[1:]: | @@ -132,11 +139,11 @@ for fileId in argv[1:]: | ||
132 | else: | 139 | else: |
133 | Timing = append(Timing,dNdt,axis=1) | 140 | Timing = append(Timing,dNdt,axis=1) |
134 | 141 | ||
135 | - InProgress(fileId,PowerSpectrum.index(powerlaw_index)+1,shape(PowerSpectrum)[0]) | 142 | + InProgress(fileId,"1",PowerSpectrum.index(powerlaw_index)+1,shape(PowerSpectrum)[0]) |
136 | 143 | ||
137 | - savetxt(folder+fileId+"/Generation.txt",Gen_contrib) | ||
138 | - savetxt(folder+fileId+"/Spectrum.txt",Spectrum) | ||
139 | - savetxt(folder+fileId+"/Source_spectrum.txt",Source) | ||
140 | - savetxt(folder+fileId+"/Angle_vs_Energy.txt",Angle_Energy) | ||
141 | - savetxt(folder+fileId+"/Radial_distribution.txt",Radial) | ||
142 | - savetxt(folder+fileId+"/Timing.txt",Timing) | 144 | + savetxt(resultDirectory+fileId+"/Generation.txt",Gen_contrib) |
145 | + savetxt(resultDirectory+fileId+"/Spectrum.txt",Spectrum) | ||
146 | + savetxt(resultDirectory+fileId+"/Source_spectrum.txt",Source) | ||
147 | + savetxt(resultDirectory+fileId+"/Angle_vs_Energy.txt",Angle_Energy) | ||
148 | + savetxt(resultDirectory+fileId+"/Radial_distribution.txt",Radial) | ||
149 | + savetxt(resultDirectory+fileId+"/Timing.txt",Timing) |
EBL-spectrums.py
@@ -5,8 +5,8 @@ from scipy.optimize import curve_fit | @@ -5,8 +5,8 @@ from scipy.optimize import curve_fit | ||
5 | import matplotlib.pyplot as plt | 5 | import matplotlib.pyplot as plt |
6 | from Modules.Constants import * | 6 | from Modules.Constants import * |
7 | 7 | ||
8 | -fig = plt.figure() | ||
9 | -ax = fig.add_subplot(111) | 8 | +fig1 = plt.figure() |
9 | +ax = fig1.add_subplot(111) | ||
10 | 10 | ||
11 | z=2 | 11 | z=2 |
12 | 12 | ||
@@ -16,11 +16,11 @@ lamb,lambdaI = np.loadtxt("EBL_files/lambdaI_Dominguez.dat",unpack=True,usecols= | @@ -16,11 +16,11 @@ lamb,lambdaI = np.loadtxt("EBL_files/lambdaI_Dominguez.dat",unpack=True,usecols= | ||
16 | hv = h*c/(lamb*1e-4) # erg | 16 | hv = h*c/(lamb*1e-4) # erg |
17 | density = 1e-6*(4*pi/c)*lambdaI/(hv**2) /(erg_to_GeV*1e9) *(1+z)**3 | 17 | density = 1e-6*(4*pi/c)*lambdaI/(hv**2) /(erg_to_GeV*1e9) *(1+z)**3 |
18 | hv = hv *(erg_to_GeV*1e9) | 18 | hv = hv *(erg_to_GeV*1e9) |
19 | -ax.plot(hv,density*hv**2,"--b",label="Dominguez and Al") | 19 | +ax.plot(hv,density*hv**2,"--b",label="Dominguez et Al") |
20 | 20 | ||
21 | # ==== Kneiske and Doll - "best fit" ==== | 21 | # ==== Kneiske and Doll - "best fit" ==== |
22 | hv,density = np.loadtxt("EBL_files/n_bestfit10.dat",unpack=True,usecols=[0,1]) | 22 | hv,density = np.loadtxt("EBL_files/n_bestfit10.dat",unpack=True,usecols=[0,1]) |
23 | -ax.plot(hv,density*hv**2,"--r",label="Kneiske and Doll - 'best fit'") | 23 | +ax.plot(hv,density*hv**2,"--r",label="Kneiske et Doll - 'best fit'") |
24 | 24 | ||
25 | # ==== Kneiske and Doll - "lower limit" ==== | 25 | # ==== Kneiske and Doll - "lower limit" ==== |
26 | hv,density = np.loadtxt("EBL_files/n_lowerlimit10.dat",unpack=True,usecols=[0,179]) | 26 | hv,density = np.loadtxt("EBL_files/n_lowerlimit10.dat",unpack=True,usecols=[0,179]) |
@@ -38,28 +38,50 @@ ax.plot(hv,density*hv**2,"--c",label="Fraceschini") | @@ -38,28 +38,50 @@ ax.plot(hv,density*hv**2,"--c",label="Fraceschini") | ||
38 | hv,density = np.loadtxt("EBL_files/n_Finke.dat",unpack=True,usecols=[0,201]) | 38 | hv,density = np.loadtxt("EBL_files/n_Finke.dat",unpack=True,usecols=[0,201]) |
39 | #hv,density = np.loadtxt("EBL_files/n_Finke.dat",unpack=True,usecols=[0,1]) | 39 | #hv,density = np.loadtxt("EBL_files/n_Finke.dat",unpack=True,usecols=[0,1]) |
40 | density=density*(1+z)**3 | 40 | density=density*(1+z)**3 |
41 | -ax.plot(hv,density*hv**2,"--m",label="Finke and Al") | 41 | +ax.plot(hv,density*hv**2,"--m",label="Finke et Al") |
42 | 42 | ||
43 | # ==== Gilmore ==== | 43 | # ==== Gilmore ==== |
44 | hv,density = np.loadtxt("EBL_files/n_Gil.dat",unpack=True,usecols=[0,14]) | 44 | hv,density = np.loadtxt("EBL_files/n_Gil.dat",unpack=True,usecols=[0,14]) |
45 | #hv,density = np.loadtxt("EBL_files/n_Gil.dat",unpack=True,usecols=[0,1]) | 45 | #hv,density = np.loadtxt("EBL_files/n_Gil.dat",unpack=True,usecols=[0,1]) |
46 | -ax.plot(hv,density*hv**2,"--y",label="Gilmore and Al") | 46 | +ax.plot(hv,density*hv**2,"--y",label="Gilmore et Al") |
47 | 47 | ||
48 | #==== CMB ==== | 48 | #==== CMB ==== |
49 | -def nCMB(E): | 49 | +def nCMB(E,z): |
50 | kTcmb = k*Tcmb*erg_to_GeV*1e9*(1+z) | 50 | kTcmb = k*Tcmb*erg_to_GeV*1e9*(1+z) |
51 | theta = E/kTcmb | 51 | theta = E/kTcmb |
52 | nCMB=(hb*c*erg_to_GeV*1e9)**(-3) *(E/np.pi)**2 /(np.exp(theta)-1) | 52 | nCMB=(hb*c*erg_to_GeV*1e9)**(-3) *(E/np.pi)**2 /(np.exp(theta)-1) |
53 | return nCMB | 53 | return nCMB |
54 | 54 | ||
55 | hv = np.logspace(-4,-1,1000) | 55 | hv = np.logspace(-4,-1,1000) |
56 | -ax.plot(hv,nCMB(hv)*hv**2,"-k",label="CMB") | 56 | +ax.plot(hv,nCMB(hv,z)*hv**2,"-k",label="CMB") |
57 | 57 | ||
58 | ax.set_xscale('log') | 58 | ax.set_xscale('log') |
59 | ax.set_yscale('log') | 59 | ax.set_yscale('log') |
60 | ax.grid(b=True,which='major') | 60 | ax.grid(b=True,which='major') |
61 | -ax.legend(loc="best",title="z = %.0f"%z) | 61 | +ax.legend(loc="best",frameon=False,framealpha=0.5) |
62 | ax.set_xlabel("energy [eV]") | 62 | ax.set_xlabel("energy [eV]") |
63 | -ax.set_ylabel("$n_{EBL}$ [photon.eV.cm$^{-3}$]") | 63 | +ax.set_ylabel("$n$ [photon.eV.cm$^{-3}$]") |
64 | + | ||
65 | +#==== Dominguez vs redshift ================================================================== | ||
66 | +fig2 = plt.figure() | ||
67 | +ax2 = fig2.add_subplot(111) | ||
68 | + | ||
69 | +z = np.loadtxt("EBL_files/z_Dominguez.dat",unpack=True,usecols=[0]) | ||
70 | +for z_index in [1,9,12,15,17]: | ||
71 | + lamb,lambdaI = np.loadtxt("EBL_files/lambdaI_Dominguez.dat",unpack=True,usecols=[0,z_index]) | ||
72 | + hv = h*c/(lamb*1e-4) # erg | ||
73 | + density = 1e-6*(4*pi/c)*lambdaI/(hv**2) /(erg_to_GeV*1e9) *(1+z[z_index])**3 | ||
74 | + hv = hv *(erg_to_GeV*1e9) | ||
75 | + p=ax2.plot(hv,density*hv**2,"--") | ||
76 | + # CMB | ||
77 | + hv = np.logspace(-4,-1,1000) | ||
78 | + ax2.plot(hv,nCMB(hv,z[z_index])*hv**2,color=p[0].get_color(),linestyle='-',label="z="+str(z[z_index-1])) | ||
79 | + | ||
80 | +ax2.set_xscale('log') | ||
81 | +ax2.set_yscale('log') | ||
82 | +ax2.grid(b=True,which='major') | ||
83 | +ax2.legend(loc="best",frameon=False,framealpha=0.5) | ||
84 | +ax2.set_xlabel("energy [eV]") | ||
85 | +ax2.set_ylabel("$n$ [photon.eV.cm$^{-3}$]") | ||
64 | 86 | ||
65 | plt.show() | 87 | plt.show() |
Modules/Map.py
1 | from numpy import shape, pi, histogram2d, arange, newaxis, exp, log, array, sin, cos | 1 | from numpy import shape, pi, histogram2d, arange, newaxis, exp, log, array, sin, cos |
2 | from scipy.signal import convolve2d | 2 | from scipy.signal import convolve2d |
3 | -from matplotlib.pyplot import figure, show, matshow | 3 | +from matplotlib.pyplot import figure, show, matshow, savefig |
4 | from matplotlib.colors import LogNorm | 4 | from matplotlib.colors import LogNorm |
5 | -from Read import ReadEnergy, ReadExtraFile, ReadMomentumAngle, ReadPositionAngle, ReadProfile | 5 | +from Read import resultDirectory |
6 | from Constants import degre | 6 | from Constants import degre |
7 | 7 | ||
8 | thetalim = 180 | 8 | thetalim = 180 |
@@ -14,15 +14,15 @@ thetalim=float(thetalim) | @@ -14,15 +14,15 @@ thetalim=float(thetalim) | ||
14 | limits = [[-thetalim,thetalim],[-philim,philim]] | 14 | limits = [[-thetalim,thetalim],[-philim,philim]] |
15 | 15 | ||
16 | def isotrop(): | 16 | def isotrop(): |
17 | - return array([[1]]) | 17 | + return array([[1]]), "isotropic" |
18 | 18 | ||
19 | def Gaussian2D(center=[0,0],fwhm=0.01): | 19 | def Gaussian2D(center=[0,0],fwhm=0.01): |
20 | x = arange(-thetalim,thetalim+step,step) | 20 | x = arange(-thetalim,thetalim+step,step) |
21 | y = arange(-philim,philim+step,step) | 21 | y = arange(-philim,philim+step,step) |
22 | y = y[:,newaxis] | 22 | y = y[:,newaxis] |
23 | - return exp(-4*log(2) * ((x-center[0])**2 + (y+center[1])**2) / fwhm**2) | 23 | + return exp(-4*log(2) * ((x-center[0])**2 + (y+center[1])**2) / fwhm**2), "jet_"+str(fwhm) |
24 | 24 | ||
25 | -def drawMap(files,Elim=0.1,source=isotrop(),borne=[180,180]): | 25 | +def printMap(theta,phi,weight,fileId,source=isotrop(),borne=[180,180]): |
26 | ''' | 26 | ''' |
27 | Plot 2D histogram of arrival direction of the photons with energy upper than Elim | 27 | Plot 2D histogram of arrival direction of the photons with energy upper than Elim |
28 | Input: list of directories | 28 | Input: list of directories |
@@ -31,47 +31,23 @@ def drawMap(files,Elim=0.1,source=isotrop(),borne=[180,180]): | @@ -31,47 +31,23 @@ def drawMap(files,Elim=0.1,source=isotrop(),borne=[180,180]): | ||
31 | Input (optional): limits on theta, phi | 31 | Input (optional): limits on theta, phi |
32 | Output: 2D histogram of theta cos(phi), theta sin(phi) | 32 | Output: 2D histogram of theta cos(phi), theta sin(phi) |
33 | ''' | 33 | ''' |
34 | - print "Cut at", Elim, "GeV" | ||
35 | fig = figure() | 34 | fig = figure() |
36 | - nbplots = len(files) | ||
37 | 35 | ||
38 | - ind=1 | ||
39 | - for fileId in files: | ||
40 | - thetaDir,phiDir = ReadMomentumAngle(fileId)*degre | ||
41 | - thetaPos,phiPos = ReadPositionAngle(fileId)*degre | ||
42 | - theta = thetaDir - thetaPos | ||
43 | - phi = phiDir -phiPos | ||
44 | - | ||
45 | - energy = ReadEnergy(fileId) | ||
46 | - weightini, Esource = ReadExtraFile(fileId,[2,5]) | ||
47 | - | ||
48 | - zsource, Dsource, nbPhotonsEmitted, EGMF = ReadProfile(fileId,[1,2,3,4]) | ||
49 | - # apply source spectrum | ||
50 | - powerlaw_index = 2 | ||
51 | - weight = weightini*(Esource/min(Esource))**(1-powerlaw_index) | ||
52 | - | ||
53 | - cond=(energy>Elim) & (abs(theta)<thetalim) & (abs(phi)<philim) | ||
54 | - energy = energy[cond] | ||
55 | - weight=weight[cond]/nbPhotonsEmitted | ||
56 | - theta=theta[cond] | ||
57 | - phi=phi[cond] | ||
58 | - | ||
59 | - H,xedges,yedges = histogram2d(theta*cos(phi),theta*sin(phi),nbBins,weights=weight,range=limits) | ||
60 | - conv=convolve2d(H,source,boundary="wrap",mode="same") | ||
61 | - | ||
62 | - ax = fig.add_subplot(100+nbplots*10+ind) | ||
63 | - im = ax.matshow(conv,norm=LogNorm(),aspect='auto', | ||
64 | - extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]]) | ||
65 | - #H,xedges,yedges,im = ax.hist2d(theta,phi,nbBins,weights=weight,norm=LogNorm()) | ||
66 | - cbar=fig.colorbar(im, ax=ax) | ||
67 | - cbar.ax.set_ylabel("counts normalize to 1 photon emitted") | ||
68 | - ax.set_xlim((-borne[0],borne[0])) | ||
69 | - ax.set_ylim((-borne[1],borne[1])) | ||
70 | - ax.set_xlabel("$\\theta$ $\\cos(\\phi)$ [deg]") | ||
71 | - ax.set_ylabel("$\\theta$ $\\sin(\\phi)$ [deg]") | ||
72 | - ax.grid(b=True,which='major') | ||
73 | - ax.set_title("source at %.0f"%Dsource+"Mpc (z=%.4f"%zsource+"): EGMF="+str(EGMF)+" Gauss" ) | ||
74 | - | ||
75 | - ind=ind+1 | ||
76 | - | ||
77 | - show() | 36 | + H,xedges,yedges = histogram2d(theta*cos(phi),theta*sin(phi),nbBins,weights=weight,range=limits) |
37 | + conv=convolve2d(H,source[0],boundary="wrap",mode="same") | ||
38 | + | ||
39 | + ax = fig.add_subplot(111) | ||
40 | + im = ax.matshow(conv,norm=LogNorm(),aspect='auto', | ||
41 | + extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]]) | ||
42 | + #H,xedges,yedges,im = ax.hist2d(theta,phi,nbBins,weights=weight,norm=LogNorm()) | ||
43 | + cbar=fig.colorbar(im, ax=ax) | ||
44 | + cbar.ax.set_ylabel("counts") | ||
45 | + ax.set_xlim((-borne[0],borne[0])) | ||
46 | + ax.set_ylim((-borne[1],borne[1])) | ||
47 | + ax.set_xlabel("$\\theta$ $\\cos(\\phi)$ [deg]") | ||
48 | + ax.set_ylabel("$\\theta$ $\\sin(\\phi)$ [deg]") | ||
49 | + ax.grid(b=True,which='major') | ||
50 | + ax.set_title(fileId+" - "+source[1]) | ||
51 | + | ||
52 | + savefig(resultDirectory+fileId+"/map_"+source[1]+".png") | ||
53 | + #show() |
Modules/Map.pyc
No preview for this file type
Modules/Read.pyc
No preview for this file type
Modules/Spectrum.py
@@ -51,7 +51,7 @@ def drawSpectrum(files,PlotAnalytic=False): | @@ -51,7 +51,7 @@ def drawSpectrum(files,PlotAnalytic=False): | ||
51 | for powerlaw_index in [1,1.5,2,2.5]: | 51 | for powerlaw_index in [1,1.5,2,2.5]: |
52 | # read files | 52 | # read files |
53 | Es,Fs = ReadSourceSpectrum(fileId,[0,i]) | 53 | Es,Fs = ReadSourceSpectrum(fileId,[0,i]) |
54 | - p = ax1.plot(Es,Fs,drawstyle='.') | 54 | + p = ax1.plot(Es,Fs,linestyle=':') |
55 | # draw full spectrum | 55 | # draw full spectrum |
56 | ener,flux,flux_0 = ReadSpectrum(fileId,[0,j,j+1]) | 56 | ener,flux,flux_0 = ReadSpectrum(fileId,[0,j,j+1]) |
57 | ax1.plot(ener,flux,color=p[0].get_color(),drawstyle='steps-mid',label="p=%.1f"%powerlaw_index) | 57 | ax1.plot(ener,flux,color=p[0].get_color(),drawstyle='steps-mid',label="p=%.1f"%powerlaw_index) |
Modules/Spectrum.pyc
No preview for this file type