Commit 28843f231ae54f8d785b802bf99b14053415b2a4

Authored by Thomas Fitoussi
1 parent 49a0fe94
Exists in master

Put radial distribution inside the map computation

=> can tke into account the jet opening if so
@@ -5,60 +5,40 @@ from numpy import append, savetxt, shape, array, newaxis, zeros, arange @@ -5,60 +5,40 @@ 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.Read import ReadMomentumAngle, ReadPositionAngle, resultDirectory
7 from Modules.Spectrum import spectrum 7 from Modules.Spectrum import spectrum
8 -from Modules.Map import printMap, isotrop  
9 -from Modules.Angle import radial, angle_vs_energy 8 +from Modules.Map import computeMap, isotrop
  9 +from Modules.Angle import angle_vs_energy
10 from Modules.Timing import timing 10 from Modules.Timing import timing
11 from Modules.Constants import degre 11 from Modules.Constants import degre
12 12
13 -def InProgress(fileId,step,i,Nmax):  
14 - print "Work on ", fileId, "(step "+ step +": ", (i*100)/Nmax, "% done" 13 +def InProgress(i,Nmax):
  14 + print " ", (i*100)/Nmax, "% done"
15 15
16 if shape(argv)[0] < 2: 16 if shape(argv)[0] < 2:
17 print "not enough arguments (at least 1)" 17 print "not enough arguments (at least 1)"
18 exit() 18 exit()
19 19
20 -#================================================================#  
21 -# Parameters  
22 -#================================================================# 20 +#=============================================================================#
23 PowerSpectrum=[1,1.5,2,2.5] 21 PowerSpectrum=[1,1.5,2,2.5]
24 -powerlaw_index = 2  
25 -Elim = 1e-1 # GeV  
26 -thetalim = 20 # degre  
27 22
28 for fileId in argv[1:]: 23 for fileId in argv[1:]:
  24 + print "#=============================================================================#"
  25 + print "# Analysis of", fileId
  26 + print "#=============================================================================#"
29 # read files 27 # read files
  28 + print "# 1. Reading data"
30 time = ReadTime(fileId) 29 time = ReadTime(fileId)
31 energy = ReadEnergy(fileId) 30 energy = ReadEnergy(fileId)
32 weightini, generation, theta_arrival, Esource = ReadExtraFile(fileId,[2,3,4,5]) 31 weightini, generation, theta_arrival, Esource = ReadExtraFile(fileId,[2,3,4,5])
33 nbPhotonsEmitted=ReadProfile(fileId,[3]) 32 nbPhotonsEmitted=ReadProfile(fileId,[3])
34 33
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])  
53 -  
54 Gen_contrib = [] 34 Gen_contrib = []
55 Gen_cont = zeros((int(max(generation))+1)) 35 Gen_cont = zeros((int(max(generation))+1))
56 Source = [] 36 Source = []
57 Spectrum = [] 37 Spectrum = []
58 - Radial = []  
59 Angle_Energy = [] 38 Angle_Energy = []
60 Timing = [] 39 Timing = []
61 40
  41 + print "# 2. Computing powerlaw spectrum"
62 for powerlaw_index in PowerSpectrum: 42 for powerlaw_index in PowerSpectrum:
63 # apply source spectrum 43 # apply source spectrum
64 weight_source = (Esource/min(Esource))**(1-powerlaw_index) 44 weight_source = (Esource/min(Esource))**(1-powerlaw_index)
@@ -78,7 +58,7 @@ for fileId in argv[1:]: @@ -78,7 +58,7 @@ for fileId in argv[1:]:
78 #=============================================================================# 58 #=============================================================================#
79 # SPECTRUM (SOURCE AND MEASURED) 59 # SPECTRUM (SOURCE AND MEASURED)
80 #=============================================================================# 60 #=============================================================================#
81 - nbBins = 100 61 + nbBins = 50
82 # draw source spectrum 62 # draw source spectrum
83 Es=array(list(set(Esource))) 63 Es=array(list(set(Esource)))
84 Ws= (Es/min(Es))**(1-powerlaw_index) 64 Ws= (Es/min(Es))**(1-powerlaw_index)
@@ -105,28 +85,6 @@ for fileId in argv[1:]: @@ -105,28 +85,6 @@ for fileId in argv[1:]:
105 Spectrum = append(Spectrum,flux_0,axis=1) 85 Spectrum = append(Spectrum,flux_0,axis=1)
106 86
107 #=============================================================================# 87 #=============================================================================#
108 - # RADIAL DISTRIBUTION AND ANGLE VERSUS ENERGY  
109 - #=============================================================================#  
110 - nbBins = 100  
111 - ener,angle = angle_vs_energy(theta_arrival,energy,weight,nbPhotonsEmitted)  
112 - ener=ener[:,newaxis]  
113 - angle=angle[:,newaxis]  
114 - if Angle_Energy==[]:  
115 - Angle_Energy = ener  
116 - Angle_Energy = append(Angle_Energy,angle,axis=1)  
117 - else:  
118 - Angle_Energy = append(Angle_Energy,angle,axis=1)  
119 -  
120 - theta,dndtheta2 = radial(theta_arrival,weight,nbPhotonsEmitted)  
121 - theta=theta[:,newaxis]  
122 - dndtheta2=dndtheta2[:,newaxis]  
123 - if Radial==[]:  
124 - Radial = theta  
125 - Radial = append(Radial,dndtheta2,axis=1)  
126 - else:  
127 - Radial = append(Radial,dndtheta2,axis=1)  
128 -  
129 - #=============================================================================#  
130 # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE 88 # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE
131 #=============================================================================# 89 #=============================================================================#
132 nbBins = 100 90 nbBins = 100
@@ -139,11 +97,57 @@ for fileId in argv[1:]: @@ -139,11 +97,57 @@ for fileId in argv[1:]:
139 else: 97 else:
140 Timing = append(Timing,dNdt,axis=1) 98 Timing = append(Timing,dNdt,axis=1)
141 99
142 - InProgress(fileId,"1",PowerSpectrum.index(powerlaw_index)+1,shape(PowerSpectrum)[0]) 100 + InProgress(PowerSpectrum.index(powerlaw_index)+1,shape(PowerSpectrum)[0])
  101 +
  102 + #=============================================================================#
  103 + # IMAGING, RADIAL DISTRIBUTION AND ANGLE VERSUS ENERGY
  104 + #=============================================================================#
  105 + print "# 3. compute images and radial distribution"
  106 + powerlaw_index = 2
  107 + Elim = 1e-1 # GeV
  108 + thetalim = 20 # degre
  109 + nbBins = 100
  110 + Radial = []
  111 +
  112 + thetaDir,phiDir = ReadMomentumAngle(fileId)*degre
  113 + thetaPos,phiPos = ReadPositionAngle(fileId)*degre
  114 + theta = thetaDir - thetaPos
  115 + phi = phiDir -phiPos
  116 +
  117 + # apply source spectrum
  118 + weight_source = (Esource/min(Esource))**(1-powerlaw_index)
  119 + weight = weightini* weight_source
143 120
  121 + # apply selection
  122 + cond=(energy>Elim) #& (abs(theta)<thetalim) & (abs(phi)<thetalim)
  123 + theta=theta[cond]
  124 + phi=phi[cond]
  125 + weight=weight[cond]
  126 + energy=energy[cond]
  127 + theta2,dndtheta2 = computeMap(theta,phi,weight,energy,fileId,nbBins,
  128 + source=isotrop(),borne=[thetalim,thetalim])
  129 + ener,angle = angle_vs_energy(theta,energy,weight,nbBins)
  130 + theta2=theta2[:,newaxis]
  131 + dndtheta2=dndtheta2[:,newaxis]
  132 + ener=ener[:,newaxis]
  133 + angle=angle[:,newaxis]
  134 +
  135 + if Radial==[]:
  136 + Radial = theta2
  137 + Radial = append(Radial,dndtheta2,axis=1)
  138 + Angle_Energy = ener
  139 + Angle_Energy = append(Angle_Energy,angle,axis=1)
  140 + else:
  141 + Radial = append(Radial,dndtheta2,axis=1)
  142 + Angle_Energy = append(Angle_Energy,angle,axis=1)
  143 +
  144 + #=============================================================================#
  145 + print "# 4. writing files"
144 savetxt(resultDirectory+fileId+"/Generation.txt",Gen_contrib) 146 savetxt(resultDirectory+fileId+"/Generation.txt",Gen_contrib)
145 savetxt(resultDirectory+fileId+"/Spectrum.txt",Spectrum) 147 savetxt(resultDirectory+fileId+"/Spectrum.txt",Spectrum)
146 savetxt(resultDirectory+fileId+"/Source_spectrum.txt",Source) 148 savetxt(resultDirectory+fileId+"/Source_spectrum.txt",Source)
147 savetxt(resultDirectory+fileId+"/Angle_vs_Energy.txt",Angle_Energy) 149 savetxt(resultDirectory+fileId+"/Angle_vs_Energy.txt",Angle_Energy)
148 savetxt(resultDirectory+fileId+"/Radial_distribution.txt",Radial) 150 savetxt(resultDirectory+fileId+"/Radial_distribution.txt",Radial)
149 savetxt(resultDirectory+fileId+"/Timing.txt",Timing) 151 savetxt(resultDirectory+fileId+"/Timing.txt",Timing)
  152 + print "#=============================================================================#"
  153 +
Modules/Angle.py
@@ -23,24 +23,6 @@ def angle_vs_energy(theta,energy,weight,nbPhotonsEmitted=1,nbBins=40): @@ -23,24 +23,6 @@ def angle_vs_energy(theta,energy,weight,nbPhotonsEmitted=1,nbBins=40):
23 23
24 return enercenter, angle 24 return enercenter, angle
25 25
26 -def radial(theta,weight,nbPhotonsEmitted=1,nbBins=50,thetamax=90):  
27 - '''  
28 - Compute flux versus arrival angle  
29 - Input: directory name  
30 - Input (optionnal): maximal angle desired (by default full sky)  
31 - Output: arrival angle, flux (dn/dtheta)  
32 - '''  
33 -  
34 - theta=log10(theta)  
35 - dn,angle = histogram(theta,nbBins,range=[log10(1e-6),log10(thetamax)],weights=weight)  
36 - angle=10**angle  
37 - thetacenter = (angle[1:nbBins+1]+angle[0:nbBins])/2  
38 - dtheta = angle[1:nbBins+1]-angle[0:nbBins]  
39 - dndtheta = dn/dtheta*thetacenter  
40 - dndtheta /= nbPhotonsEmitted  
41 -  
42 - return thetacenter, dndtheta  
43 -  
44 def drawAngle_vs_energy(files): 26 def drawAngle_vs_energy(files):
45 ''' 27 '''
46 Plot arrival angle versus energy + analytic expression 28 Plot arrival angle versus energy + analytic expression
@@ -51,11 +33,8 @@ def drawAngle_vs_energy(files): @@ -51,11 +33,8 @@ def drawAngle_vs_energy(files):
51 ax1 = fig.add_subplot(111) 33 ax1 = fig.add_subplot(111)
52 34
53 for fileId in files: 35 for fileId in files:
54 - i=1  
55 - for powerlaw_index in [1,1.5,2,2.5]:  
56 - # apply source spectrum  
57 - ener,angle = ReadAngleVsEnergy(fileId,[0,i])  
58 - p=ax1.plot(ener,angle,'-',label="p=%.1f"%powerlaw_index) 36 + ener,angle = ReadAngleVsEnergy(fileId,[0,1])
  37 + p=ax1.plot(ener,angle,drawstyle='steps-mid',label=fileId)
59 38
60 yfit = Analytic_theta(ener,fileId) 39 yfit = Analytic_theta(ener,fileId)
61 ax1.plot(ener,yfit,'--',color="m",linewidth=2,label="analytic") 40 ax1.plot(ener,yfit,'--',color="m",linewidth=2,label="analytic")
@@ -69,27 +48,3 @@ def drawAngle_vs_energy(files): @@ -69,27 +48,3 @@ def drawAngle_vs_energy(files):
69 ax1.set_xlabel("energy [GeV]") 48 ax1.set_xlabel("energy [GeV]")
70 49
71 show() 50 show()
72 -  
73 -def drawRadial(files):  
74 - '''  
75 - Plot flux versus arrival angle  
76 - Input: list of directories  
77 - Output: graph of flux versus angle  
78 - '''  
79 - fig = figure()  
80 - ax = fig.add_subplot(111)  
81 -  
82 - for fileId in files:  
83 - i=1  
84 - for powerlaw_index in [1,1.5,2,2.5]:  
85 - theta,dndtheta2 = ReadRadial(fileId,[0,i])  
86 - ax.plot(theta,dndtheta2,drawstyle='steps-mid',label="p=%.1f"%powerlaw_index)  
87 -  
88 - ax.legend(loc="best")  
89 - ax.set_xscale('log')  
90 - ax.set_yscale('log')  
91 - ax.grid(b=True,which='major')  
92 - ax.set_xlabel("$\\theta$ [rad]")  
93 - ax.set_ylabel("$\\theta*dN/d\\theta$")  
94 -  
95 - show()  
Modules/Angle.pyc
No preview for this file type
Modules/Generation.py
@@ -2,7 +2,6 @@ from numpy import shape, arange @@ -2,7 +2,6 @@ from numpy import shape, arange
2 from matplotlib.pyplot import figure, show, hist 2 from matplotlib.pyplot import figure, show, hist
3 from Read import ReadGeneration 3 from Read import ReadGeneration
4 4
5 -  
6 def drawGeneration(files): 5 def drawGeneration(files):
7 ''' 6 '''
8 Plot histogram of particles'generations 7 Plot histogram of particles'generations
Modules/Map.py
1 -from numpy import shape, pi, histogram2d, arange, newaxis, exp, log, array, sin, cos 1 +from numpy import shape, histogram2d, arange, newaxis, array, nditer, zeros, histogram
  2 +from numpy import sqrt, pi, exp, log, log10, sin, cos, where
2 from scipy.signal import convolve2d 3 from scipy.signal import convolve2d
3 -from matplotlib.pyplot import figure, show, matshow, savefig 4 +from matplotlib.pyplot import figure, matshow, savefig, show
4 from matplotlib.colors import LogNorm 5 from matplotlib.colors import LogNorm
5 -from Read import resultDirectory 6 +from Read import resultDirectory, ReadRadial, ReadAngleVsEnergy
  7 +from Analytic import Analytic_theta
6 from Constants import degre 8 from Constants import degre
7 9
8 thetalim = 180 10 thetalim = 180
9 philim = 180 11 philim = 180
10 step = 0.25 #deg 12 step = 0.25 #deg
11 -nbBins = array([int(2*philim/step)+1,int(2*thetalim/step)+1]) 13 +bining = array([int(2*philim/step)+1,int(2*thetalim/step)+1])
12 philim=float(philim) 14 philim=float(philim)
13 thetalim=float(thetalim) 15 thetalim=float(thetalim)
14 limits = [[-thetalim,thetalim],[-philim,philim]] 16 limits = [[-thetalim,thetalim],[-philim,philim]]
@@ -22,7 +24,7 @@ def Gaussian2D(center=[0,0],fwhm=0.01): @@ -22,7 +24,7 @@ def Gaussian2D(center=[0,0],fwhm=0.01):
22 y = y[:,newaxis] 24 y = y[:,newaxis]
23 return exp(-4*log(2) * ((x-center[0])**2 + (y+center[1])**2) / fwhm**2), "jet_"+str(fwhm) 25 return exp(-4*log(2) * ((x-center[0])**2 + (y+center[1])**2) / fwhm**2), "jet_"+str(fwhm)
24 26
25 -def printMap(theta,phi,weight,fileId,source=isotrop(),borne=[180,180]): 27 +def computeMap(theta,phi,weight,energy,saveId,nbBins=50,source=isotrop(),borne=[180,180]):
26 ''' 28 '''
27 Plot 2D histogram of arrival direction of the photons with energy upper than Elim 29 Plot 2D histogram of arrival direction of the photons with energy upper than Elim
28 Input: list of directories 30 Input: list of directories
@@ -33,13 +35,18 @@ def printMap(theta,phi,weight,fileId,source=isotrop(),borne=[180,180]): @@ -33,13 +35,18 @@ def printMap(theta,phi,weight,fileId,source=isotrop(),borne=[180,180]):
33 ''' 35 '''
34 fig = figure() 36 fig = figure()
35 37
36 - H,xedges,yedges = histogram2d(theta*cos(phi),theta*sin(phi),nbBins,weights=weight,range=limits) 38 + H,xedges,yedges = histogram2d(theta*cos(phi),theta*sin(phi),bining,weights=weight,range=limits)
37 conv=convolve2d(H,source[0],boundary="wrap",mode="same") 39 conv=convolve2d(H,source[0],boundary="wrap",mode="same")
  40 + #H2,xedges,yedges = histogram2d(theta*cos(phi),theta*sin(phi),bining,weights=energy,range=limits)
  41 + #conv2=convolve2d(H2,source[0],boundary="wrap",mode="same")
38 42
  43 + #===============================================================================================#
  44 + # IMAGE
  45 + #===============================================================================================#
39 ax = fig.add_subplot(111) 46 ax = fig.add_subplot(111)
40 im = ax.matshow(conv,norm=LogNorm(),aspect='auto', 47 im = ax.matshow(conv,norm=LogNorm(),aspect='auto',
41 extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]]) 48 extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]])
42 - #H,xedges,yedges,im = ax.hist2d(theta,phi,nbBins,weights=weight,norm=LogNorm()) 49 + #H,xedges,yedges,im = ax.hist2d(theta,phi,bining,weights=weight,norm=LogNorm())
43 cbar=fig.colorbar(im, ax=ax) 50 cbar=fig.colorbar(im, ax=ax)
44 cbar.ax.set_ylabel("counts") 51 cbar.ax.set_ylabel("counts")
45 ax.set_xlim((-borne[0],borne[0])) 52 ax.set_xlim((-borne[0],borne[0]))
@@ -47,7 +54,70 @@ def printMap(theta,phi,weight,fileId,source=isotrop(),borne=[180,180]): @@ -47,7 +54,70 @@ def printMap(theta,phi,weight,fileId,source=isotrop(),borne=[180,180]):
47 ax.set_xlabel("$\\theta$ $\\cos(\\phi)$ [deg]") 54 ax.set_xlabel("$\\theta$ $\\cos(\\phi)$ [deg]")
48 ax.set_ylabel("$\\theta$ $\\sin(\\phi)$ [deg]") 55 ax.set_ylabel("$\\theta$ $\\sin(\\phi)$ [deg]")
49 ax.grid(b=True,which='major') 56 ax.grid(b=True,which='major')
50 - ax.set_title(fileId+" - "+source[1]) 57 + ax.set_title(saveId+" - "+source[1])
51 58
52 - savefig(resultDirectory+fileId+"/map_"+source[1]+".png")  
53 - #show() 59 + savefig(resultDirectory+saveId+"/map_"+source[1]+".png")
  60 +
  61 + #===============================================================================================#
  62 + # RADIAL DISTRIBUTION AND ENERGY VERSUS ANGLE
  63 + #===============================================================================================#
  64 + theta2 = zeros(shape(conv)[0]*shape(conv)[1])
  65 + N_evts = zeros(shape(conv)[0]*shape(conv)[1])
  66 + #E_evts = zeros(shape(conv)[0]*shape(conv)[1])
  67 + theta_cos_phi = xedges[::-1]
  68 + theta_sin_phi = yedges[::-1]
  69 + it = nditer(conv,flags=["multi_index"])
  70 + #it2 = nditer(conv2,flags=["multi_index"])
  71 + k = 0
  72 + while not it.finished:
  73 + i = int(it.multi_index[1])
  74 + j = int(it.multi_index[0])
  75 + theta2[k]= sqrt(theta_cos_phi[i]**2+theta_sin_phi[j]**2)
  76 + N_evts[k]= it[0]
  77 + #E_evts[k]= it2[0]
  78 + k += 1
  79 + it.iternext()
  80 + #it2.iternext()
  81 +
  82 + theta2=log10(theta2)
  83 + thetamax=max(borne)
  84 + dn,angle = histogram(theta2,nbBins,range=[log10(1e-2),log10(thetamax)],weights=N_evts)
  85 + angle=10**angle
  86 + thetacenter = (angle[1:nbBins+1]+angle[0:nbBins])/2
  87 + dtheta = angle[1:nbBins+1]-angle[0:nbBins]
  88 + dndtheta = dn/dtheta*thetacenter
  89 +
  90 + #theta2 = 10**theta2
  91 + #E_evts = E_evts[E_evts!=0]
  92 + #N_evts = N_evts[N_evts!=0]
  93 + #theta2 = theta2[E_evts!=0]
  94 + #E_evts =log10(E_evts)
  95 + #angle,ener =histogram(E_evts,nbBins,weights=N_evts*theta2)
  96 + #nb,ener =histogram(E_evts,nbBins,weights=N_evts)
  97 + #ener = 10**ener
  98 + #enercenter=(ener[1:nbBins+1]+ener[0:nbBins])/2
  99 + #angle /= nb*degre
  100 +
  101 + return thetacenter, dndtheta #, enercenter, angle
  102 +
  103 +def drawRadial(files):
  104 + '''
  105 + Plot flux versus arrival angle
  106 + Input: list of directories
  107 + Output: graph of flux versus angle
  108 + '''
  109 + fig = figure()
  110 + ax = fig.add_subplot(111)
  111 +
  112 + for fileId in files:
  113 + theta,dndtheta2 = ReadRadial(fileId,[0,1])
  114 + ax.plot(theta,dndtheta2,drawstyle='steps-mid',label=fileId)
  115 +
  116 + ax.legend(loc="best")
  117 + ax.set_xscale('log')
  118 + ax.set_yscale('log')
  119 + ax.grid(b=True,which='major')
  120 + ax.set_xlabel("$\\theta$ [deg]")
  121 + ax.set_ylabel("$\\theta*dN/d\\theta$")
  122 +
  123 + show()
Modules/Map.pyc
No preview for this file type
@@ -9,16 +9,31 @@ They also requires: @@ -9,16 +9,31 @@ They also requires:
9 9
10 Instruction to install it could be found here: http://www.scipy.org/install.html 10 Instruction to install it could be found here: http://www.scipy.org/install.html
11 11
12 -## Principle 12 +## Important remarks
13 13
14 -There is interdependancy between modules. Don't copy one and not the others otherwise they will be 14 +There is interdependency between modules. Don't copy one and not the others otherwise they will be
15 errors. 15 errors.
16 16
17 -In the same time, the function in each module are written in way being used independantly, just 17 +In the same time, the function in each module are written in way being used independently, just
18 import it and python will do the rest. For example, to use the spectrum, use just add to your 18 import it and python will do the rest. For example, to use the spectrum, use just add to your
19 script: "from Modules.Spectrum import spectrum". 19 script: "from Modules.Spectrum import spectrum".
20 20
21 -Few modules are available: 21 +## how-to
  22 +
  23 +* First create a directory call Results in which will be copy the output directory of the
  24 + simulation. You can named the output directory as you wish. It aims to have separately different
  25 + simulations and plot them together.
  26 +
  27 + mkdir Results
  28 +
  29 +* Since data files can become really huge, the "Analysis.py" script aims to pre-generate the need
  30 + files which will be used later to draw figures.
  31 +
  32 + python Analysis output
  33 + or if you want to do more than directory at a time
  34 + python Analysis output another_result_directory etc
  35 +
  36 +* From you draw some figures using the modules available
22 37
23 | Modules | functions | 38 | Modules | functions |
24 | --------------- | --------------------------------------------------------- | 39 | --------------- | --------------------------------------------------------- |
@@ -29,8 +44,10 @@ Few modules are available: @@ -29,8 +44,10 @@ Few modules are available:
29 | "Spectrum.py" | extract and plot the spectrum | 44 | "Spectrum.py" | extract and plot the spectrum |
30 | "timing.py" | extract and plot delta_t/t | 45 | "timing.py" | extract and plot delta_t/t |
31 | "Angle.py" | extract and plot theta^2 in histogram or versus energy | 46 | "Angle.py" | extract and plot theta^2 in histogram or versus energy |
32 -| "Map.py" | plot map of the arrival photon, points or histo2d |  
33 -| "Generation.py" | plot historgram of the arrival particles generation | 47 +| "Map.py" | plot map of the arrival photons histo2d |
  48 +| "Generation.py" | plot histogram of the arrival particles generation |
  49 +
  50 +or develop yours!
34 51
35 **N.B.:** "draw..." function call a table of files because it allows to plots more than one figure 52 **N.B.:** "draw..." function call a table of files because it allows to plots more than one figure
36 on the same graph, rather than the rest of the function can call only one file at a time. 53 on the same graph, rather than the rest of the function can call only one file at a time.