Commit f5a7501927b775d30ec58a0d27b8b508657e8aec
1 parent
a44230b7
Exists in
master
Rewrite Analysis.py :
> only one power law spectrum index > compute results gen by gen and by energy range when it makes sense > add observables.py to plot 3D space of arrival parameters (E, dt, theta)
Showing
23 changed files
with
327 additions
and
346 deletions
Show diff stats
Analysis.py
@@ -10,21 +10,18 @@ from Modules.Angle import angle_vs_energy, radial | @@ -10,21 +10,18 @@ from Modules.Angle import angle_vs_energy, radial | ||
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(i,Nmax): | ||
14 | - print " ", (i*100)/Nmax, "% done" | ||
15 | - | ||
16 | if shape(argv)[0] < 2: | 13 | if shape(argv)[0] < 2: |
17 | print "not enough arguments (at least 1)" | 14 | print "not enough arguments (at least 1)" |
18 | exit() | 15 | exit() |
19 | 16 | ||
20 | -PowerSpectrum=[1,1.5,2,2.5] | 17 | +powerlaw_index=2 |
21 | 18 | ||
22 | for fileId in argv[1:]: | 19 | for fileId in argv[1:]: |
23 | - print "#=============================================================================#" | ||
24 | - print "# Analysis of", fileId | ||
25 | - print "#=============================================================================#" | 20 | + print "#===============================================#" |
21 | + print "# Analysis of", fileId | ||
22 | + print "#===============================================#" | ||
26 | # read files | 23 | # read files |
27 | - print "# 1. Reading data" | 24 | + print " > Reading data" |
28 | time = ReadTime(fileId) | 25 | time = ReadTime(fileId) |
29 | energy = ReadEnergy(fileId) | 26 | energy = ReadEnergy(fileId) |
30 | weightini, generation, theta_arrival, Esource, dir_source = ReadExtraFile(fileId,[2,3,4,5,6]) | 27 | weightini, generation, theta_arrival, Esource, dir_source = ReadExtraFile(fileId,[2,3,4,5,6]) |
@@ -39,228 +36,135 @@ for fileId in argv[1:]: | @@ -39,228 +36,135 @@ for fileId in argv[1:]: | ||
39 | theta = thetaDir - thetaPos | 36 | theta = thetaDir - thetaPos |
40 | phi = phiDir -phiPos | 37 | phi = phiDir -phiPos |
41 | 38 | ||
42 | - Gen_contrib = [] | ||
43 | - Gen_cont = zeros((int(max(generation))+1)) | ||
44 | - Source = [] | ||
45 | - Spectrum = [] | ||
46 | - Timing = [] | ||
47 | - Angle_Energy = [] | ||
48 | - Radial = [] | ||
49 | - | ||
50 | - print "# 2. Computing powerlaw spectrum" | ||
51 | - #=============================================================================# | ||
52 | - # VERSUS SOURCE SPECTRUM | ||
53 | - #=============================================================================# | ||
54 | - for powerlaw_index in PowerSpectrum: | ||
55 | - # apply source spectrum | ||
56 | - weight_source = (Esource/min(Esource))**(1-powerlaw_index) | ||
57 | - weight = weightini* weight_source | ||
58 | - | ||
59 | - # GENERATION CONTRIBUTION ====================================================# | ||
60 | - NbTotEvents = sum(weight) | ||
61 | - if Gen_contrib==[]: | ||
62 | - Gen_contrib = arange(0,max(generation)+1,1)[:,newaxis] | ||
63 | - | ||
64 | - for gen in list(set(generation)): | ||
65 | - Gen_cont[int(gen)] = sum(weight[generation==gen])/NbTotEvents *100 | ||
66 | - Gen_contrib = append(Gen_contrib,Gen_cont[:,newaxis],axis=1) | ||
67 | - | ||
68 | - # SPECTRUM (SOURCE AND MEASURED) ============================================# | ||
69 | - nbBins = 100 | ||
70 | - # draw source spectrum | ||
71 | - Es=array(list(set(Esource))) | ||
72 | - Ws= (Es/min(Es))**(1-powerlaw_index) / ratio | ||
73 | - Es,Fs = spectrum(Es,Ws,nbBins=nbBins) | ||
74 | - Es=Es[:,newaxis] | ||
75 | - Fs=Fs[:,newaxis] | ||
76 | - if Source==[]: | ||
77 | - Source = Es | ||
78 | - Source = append(Source,Fs,axis=1) | ||
79 | - else: | ||
80 | - Source = append(Source,Fs,axis=1) | ||
81 | - | ||
82 | - # primary gamma-rays contribution and full spectrum | ||
83 | - ener,flux,flux_0 = spectrum(energy,weight,generation,nbBins) | ||
84 | - ener=ener[:,newaxis] | ||
85 | - flux=flux[:,newaxis] | ||
86 | - flux_0=flux_0[:,newaxis] | ||
87 | - if Spectrum==[]: | ||
88 | - Spectrum = ener | ||
89 | - Spectrum = append(Spectrum,flux,axis=1) | ||
90 | - Spectrum = append(Spectrum,flux_0,axis=1) | ||
91 | - else: | ||
92 | - Spectrum = append(Spectrum,flux,axis=1) | ||
93 | - Spectrum = append(Spectrum,flux_0,axis=1) | ||
94 | - | ||
95 | - # IMAGING, RADIAL DISTRIBUTION AND ANGLE VERSUS ENERGY ======================# | ||
96 | - nbBins = 50 | ||
97 | - cond = energy>1e-3 | ||
98 | - ener,angle = angle_vs_energy(theta_arrival[cond],energy[cond],weight[cond],nbBins) | ||
99 | - theta2,dndtheta2 = radial(theta[cond],weight[cond],nbBins) | ||
100 | - theta2=theta2[:,newaxis] | ||
101 | - dndtheta2=dndtheta2[:,newaxis] | ||
102 | - ener=ener[:,newaxis] | ||
103 | - angle=angle[:,newaxis] | ||
104 | - | ||
105 | - if Radial==[]: | ||
106 | - Radial = theta2 | ||
107 | - Radial = append(Radial,dndtheta2,axis=1) | ||
108 | - Angle_Energy = ener | ||
109 | - Angle_Energy = append(Angle_Energy,angle,axis=1) | ||
110 | - else: | ||
111 | - Radial = append(Radial,dndtheta2,axis=1) | ||
112 | - Angle_Energy = append(Angle_Energy,angle,axis=1) | ||
113 | - | ||
114 | - | ||
115 | - # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE =============================# | ||
116 | - nbBins = 100 | ||
117 | - delta_t,dNdt = timing(time,weight,nbBins) | ||
118 | - delta_t=delta_t[:,newaxis] | ||
119 | - dNdt=dNdt[:,newaxis] | ||
120 | - if Timing==[]: | ||
121 | - Timing = delta_t | ||
122 | - Timing = append(Timing,dNdt,axis=1) | ||
123 | - else: | ||
124 | - Timing = append(Timing,dNdt,axis=1) | ||
125 | - | ||
126 | - InProgress(PowerSpectrum.index(powerlaw_index)+1,shape(PowerSpectrum)[0]) | 39 | + powerlaw_index = 2 |
127 | 40 | ||
128 | #=============================================================================# | 41 | #=============================================================================# |
129 | - # VERSUS JET OPENING ANGLE | 42 | + # NO SELECTION |
130 | #=============================================================================# | 43 | #=============================================================================# |
131 | - Jet_Opening=[180,60,30] # degre (180 <=> isotrop) | ||
132 | - powerlaw_index = 2 | ||
133 | - Elim = 1e-1 # GeV | ||
134 | - thetalim = 20 # degre | ||
135 | - | ||
136 | - # apply source spectrum | 44 | + print " > No selection of events ..." |
45 | + # SPECTRUM (SOURCE) =========================================================# | ||
137 | weight_source = (Esource/min(Esource))**(1-powerlaw_index) | 46 | weight_source = (Esource/min(Esource))**(1-powerlaw_index) |
138 | weight = weightini* weight_source | 47 | weight = weightini* weight_source |
139 | - | ||
140 | - print "# 3. compute images and radial distribution" | ||
141 | - for jet_opening_angle in Jet_Opening: | ||
142 | - # apply selection ( /!\ USE DECREASING VALUES OF jet_opening_angle ) | ||
143 | - cond = (dir_source*degre <= jet_opening_angle) #& (energy>Elim) #& (abs(theta)<thetalim) & (abs(phi)<thetalim) | ||
144 | - dir_source = dir_source[cond] | ||
145 | - theta_arrival = theta_arrival[cond] | ||
146 | - theta = theta[cond] | ||
147 | - phi = phi[cond] | ||
148 | - weight = weight[cond] | ||
149 | - energy = energy[cond] | ||
150 | - time = time[cond] | ||
151 | - generation = generation[cond] | ||
152 | - | ||
153 | - # GENERATION CONTRIBUTION ====================================================# | ||
154 | - NbTotEvents = sum(weight) | ||
155 | - if Gen_contrib==[]: | ||
156 | - Gen_contrib = arange(0,max(generation)+1,1)[:,newaxis] | ||
157 | - | ||
158 | - for gen in list(set(generation)): | ||
159 | - Gen_cont[int(gen)] = sum(weight[generation==gen])/NbTotEvents *100 | ||
160 | - Gen_contrib = append(Gen_contrib,Gen_cont[:,newaxis],axis=1) | ||
161 | - | ||
162 | - # SPECTRUM (SOURCE AND MEASURED) ============================================# | ||
163 | - nbBins = 100 | ||
164 | - # draw source spectrum | ||
165 | - Es=array(list(set(Esource))) | ||
166 | - Ws= (Es/min(Es))**(1-powerlaw_index) / ratio | ||
167 | - Es,Fs = spectrum(Es,Ws,nbBins=nbBins) | ||
168 | - Es=Es[:,newaxis] | ||
169 | - Fs=Fs[:,newaxis] | ||
170 | - if Source==[]: | ||
171 | - Source = Es | ||
172 | - Source = append(Source,Fs,axis=1) | ||
173 | - else: | ||
174 | - Source = append(Source,Fs,axis=1) | ||
175 | - | ||
176 | - # primary gamma-rays contribution and full spectrum | ||
177 | - ener,flux,flux_0 = spectrum(energy,weight,generation,nbBins) | ||
178 | - ener=ener[:,newaxis] | ||
179 | - flux=flux[:,newaxis] | ||
180 | - flux_0=flux_0[:,newaxis] | ||
181 | - if Spectrum==[]: | ||
182 | - Spectrum = ener | ||
183 | - Spectrum = append(Spectrum,flux,axis=1) | ||
184 | - Spectrum = append(Spectrum,flux_0,axis=1) | ||
185 | - else: | ||
186 | - Spectrum = append(Spectrum,flux,axis=1) | ||
187 | - Spectrum = append(Spectrum,flux_0,axis=1) | ||
188 | - | ||
189 | - # IMAGING, RADIAL DISTRIBUTION AND ANGLE VERSUS ENERGY ======================# | ||
190 | - nbBins = 50 | ||
191 | - computeMap(theta,phi,weight,energy,fileId,jet_opening_angle,nbBins,borne=[thetalim,thetalim]) | ||
192 | - ener,angle = angle_vs_energy(theta_arrival,energy,weight,nbBins) | ||
193 | - theta2,dndtheta2 = radial(theta_arrival,weight,nbBins) | ||
194 | - theta2=theta2[:,newaxis] | ||
195 | - dndtheta2=dndtheta2[:,newaxis] | ||
196 | - ener=ener[:,newaxis] | ||
197 | - angle=angle[:,newaxis] | ||
198 | - | ||
199 | - if Radial==[]: | ||
200 | - Radial = theta2 | ||
201 | - Radial = append(Radial,dndtheta2,axis=1) | ||
202 | - Angle_Energy = ener | ||
203 | - Angle_Energy = append(Angle_Energy,angle,axis=1) | ||
204 | - else: | ||
205 | - Radial = append(Radial,dndtheta2,axis=1) | ||
206 | - Angle_Energy = append(Angle_Energy,angle,axis=1) | ||
207 | - | ||
208 | - # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE =============================# | ||
209 | - nbBins = 100 | ||
210 | - delta_t,dNdt = timing(time,weight,nbBins) | ||
211 | - delta_t=delta_t[:,newaxis] | ||
212 | - dNdt=dNdt[:,newaxis] | ||
213 | - Timing = append(Timing,dNdt,axis=1) | ||
214 | - | ||
215 | - InProgress(Jet_Opening.index(jet_opening_angle)+1,shape(Jet_Opening)[0]) | 48 | + nbBins = 100 |
49 | + Es=array(list(set(Esource))) | ||
50 | + Ws= (Es/min(Es))**(1-powerlaw_index) / ratio | ||
51 | + Es,Fs = spectrum(Es,Ws,nbBins=nbBins) | ||
52 | + Es=Es[:,newaxis] | ||
53 | + Fs=Fs[:,newaxis] | ||
54 | + Source = Es | ||
55 | + Source = append(Source,Fs,axis=1) | ||
56 | + | ||
57 | + # IMAGING ===================================================================# | ||
58 | + print " ... Computing image" | ||
59 | + nbBins = 50 | ||
60 | + thetalim = 20 | ||
61 | + computeMap(theta,phi,weight,energy,fileId,nbBins,borne=[thetalim,thetalim]) | ||
62 | + | ||
63 | + # SPECTRUM (MEASURED) =======================================================# | ||
64 | + print " ... Computing spectrum" | ||
65 | + nbBins = 100 | ||
66 | + ener,flux = spectrum(energy,weight,nbBins) | ||
67 | + ener=ener[:,newaxis] | ||
68 | + flux=flux[:,newaxis] | ||
69 | + Spectrum = ener | ||
70 | + Spectrum = append(Spectrum,flux,axis=1) | ||
71 | + | ||
72 | + # ANGLE VERSUS ENERGY =======================================================# | ||
73 | + print " ... Computing arrival angle versus energy" | ||
74 | + nbBins = 100 | ||
75 | + ener,angle = angle_vs_energy(theta_arrival,energy,weight,nbBins) | ||
76 | + ener=ener[:,newaxis] | ||
77 | + angle=angle[:,newaxis] | ||
78 | + Angle_Energy = ener | ||
79 | + Angle_Energy = append(Angle_Energy,angle,axis=1) | ||
80 | + | ||
81 | + # RADIAL ====================================================================# | ||
82 | + print " ... Computing radial distribution" | ||
83 | + nbBins = 100 | ||
84 | + theta2,dndtheta = radial(theta,weight,nbBins) | ||
85 | + theta2=theta2[:,newaxis] | ||
86 | + dndtheta=dndtheta[:,newaxis] | ||
87 | + Radial = theta2 | ||
88 | + Radial = append(Radial,dndtheta,axis=1) | ||
89 | + | ||
90 | + # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE =============================# | ||
91 | + print " ... Computing time distribution" | ||
92 | + nbBins = 100 | ||
93 | + delta_t,dNdt = timing(time,weight,nbBins) | ||
94 | + delta_t=delta_t[:,newaxis] | ||
95 | + dNdt=dNdt[:,newaxis] | ||
96 | + Timing = delta_t | ||
97 | + Timing = append(Timing,dNdt,axis=1) | ||
216 | 98 | ||
217 | #=============================================================================# | 99 | #=============================================================================# |
218 | # BY ENERGY RANGE | 100 | # BY ENERGY RANGE |
219 | #=============================================================================# | 101 | #=============================================================================# |
220 | - print "# 3. By energy range" | ||
221 | - powerlaw_index = 2 | ||
222 | - weight_source = (Esource/min(Esource))**(1-powerlaw_index) | ||
223 | - weight = weightini* weight_source | ||
224 | - | 102 | + print " > Selection by energy range ..." |
225 | Emin = [1e-3,1e0,1e3] #GeV | 103 | Emin = [1e-3,1e0,1e3] #GeV |
226 | Emax = [1e0,1e3,1e5] #GeV | 104 | Emax = [1e0,1e3,1e5] #GeV |
105 | + | ||
227 | for n in arange(0,3,1): | 106 | for n in arange(0,3,1): |
228 | cond= (energy>Emin[n]) & (energy<Emax[n]) | 107 | cond= (energy>Emin[n]) & (energy<Emax[n]) |
229 | 108 | ||
230 | - # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE =============================# | 109 | + # RADIAL =================================================================# |
110 | + nbBins = 100 | ||
111 | + theta2,dndtheta = radial(theta[cond],weight[cond],nbBins) | ||
112 | + dndtheta=dndtheta[:,newaxis] | ||
113 | + Radial = append(Radial,dndtheta,axis=1) | ||
114 | + | ||
115 | + # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE ==========================# | ||
231 | nbBins = 100 | 116 | nbBins = 100 |
232 | delta_t,dNdt = timing(time[cond],weight[cond],nbBins) | 117 | delta_t,dNdt = timing(time[cond],weight[cond],nbBins) |
233 | - delta_t=delta_t[:,newaxis] | ||
234 | dNdt=dNdt[:,newaxis] | 118 | dNdt=dNdt[:,newaxis] |
235 | Timing = append(Timing,dNdt,axis=1) | 119 | Timing = append(Timing,dNdt,axis=1) |
236 | 120 | ||
121 | + print " ... ", ((n+1)*100)/3,"% done" | ||
122 | + | ||
237 | #=============================================================================# | 123 | #=============================================================================# |
238 | # BY GENERATION | 124 | # BY GENERATION |
239 | #=============================================================================# | 125 | #=============================================================================# |
240 | - print "# 3. By generation" | 126 | + print " > Selection by generation ..." |
127 | + NbTotEvents = sum(weight) | ||
241 | gen_tab =list(set(generation)) | 128 | gen_tab =list(set(generation)) |
242 | - powerlaw_index = 2 | ||
243 | - weight_source = (Esource/min(Esource))**(1-powerlaw_index) | ||
244 | - weight = weightini* weight_source | ||
245 | - | 129 | + Gen_cont = zeros([shape(gen_tab)[0],2]) |
246 | for gen in gen_tab: | 130 | for gen in gen_tab: |
247 | cond = generation==gen | 131 | cond = generation==gen |
248 | - print shape(time[cond]) | 132 | + contrib =sum(weight[cond])/NbTotEvents*100 |
133 | + i = gen_tab.index(gen) | ||
134 | + Gen_cont[i,0]=int(gen) | ||
135 | + Gen_cont[i,1]=contrib | ||
136 | + print " ... gen=",int(gen),"-> contribution:",int(contrib),"%" | ||
137 | + | ||
138 | + # SPECTRUM (MEASURED) ====================================================# | ||
139 | + nbBins = 100 | ||
140 | + ener,flux = spectrum(energy[cond],weight[cond],nbBins) | ||
141 | + flux=flux[:,newaxis] | ||
142 | + Spectrum = append(Spectrum,flux,axis=1) | ||
249 | 143 | ||
250 | - # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE =============================# | 144 | + # ANGLE VERSUS ENERGY ====================================================# |
145 | + nbBins = 100 | ||
146 | + ener,angle = angle_vs_energy(theta_arrival[cond],energy[cond],weight[cond],nbBins) | ||
147 | + angle=angle[:,newaxis] | ||
148 | + Angle_Energy = append(Angle_Energy,angle,axis=1) | ||
149 | + | ||
150 | + # RADIAL =================================================================# | ||
151 | + nbBins = 100 | ||
152 | + theta2,dndtheta = radial(theta[cond],weight[cond],nbBins) | ||
153 | + dndtheta=dndtheta[:,newaxis] | ||
154 | + Radial = append(Radial,dndtheta,axis=1) | ||
155 | + | ||
156 | + # TIME DISTRIBUTION AND TIME DELAY VERSUS ANGLE ==========================# | ||
251 | nbBins = 100 | 157 | nbBins = 100 |
252 | delta_t,dNdt = timing(time[cond],weight[cond],nbBins) | 158 | delta_t,dNdt = timing(time[cond],weight[cond],nbBins) |
253 | - delta_t=delta_t[:,newaxis] | ||
254 | dNdt=dNdt[:,newaxis] | 159 | dNdt=dNdt[:,newaxis] |
255 | Timing = append(Timing,dNdt,axis=1) | 160 | Timing = append(Timing,dNdt,axis=1) |
256 | 161 | ||
257 | #=============================================================================# | 162 | #=============================================================================# |
258 | - print "# 4. writing files" | ||
259 | - savetxt(resultDirectory+fileId+"/Generation.txt",Gen_contrib) | 163 | + print " > writing files" |
260 | savetxt(resultDirectory+fileId+"/Spectrum.txt",Spectrum) | 164 | savetxt(resultDirectory+fileId+"/Spectrum.txt",Spectrum) |
261 | savetxt(resultDirectory+fileId+"/Source_spectrum.txt",Source) | 165 | savetxt(resultDirectory+fileId+"/Source_spectrum.txt",Source) |
262 | savetxt(resultDirectory+fileId+"/Angle_vs_Energy.txt",Angle_Energy) | 166 | savetxt(resultDirectory+fileId+"/Angle_vs_Energy.txt",Angle_Energy) |
263 | savetxt(resultDirectory+fileId+"/Radial_distribution.txt",Radial) | 167 | savetxt(resultDirectory+fileId+"/Radial_distribution.txt",Radial) |
264 | savetxt(resultDirectory+fileId+"/Timing.txt",Timing) | 168 | savetxt(resultDirectory+fileId+"/Timing.txt",Timing) |
265 | - print "#=============================================================================#" | ||
266 | - | 169 | + savetxt(resultDirectory+fileId+"/Generation.txt",Gen_cont) |
170 | + print "#===============================================#" |
EBL-spectrums.py
@@ -58,7 +58,7 @@ ax.plot(hv,nCMB(hv,z)*hv**2,"-k",label="CMB") | @@ -58,7 +58,7 @@ ax.plot(hv,nCMB(hv,z)*hv**2,"-k",label="CMB") | ||
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",frameon=False,framealpha=0.5) | 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$ [photon.eV.cm$^{-3}$]") | 63 | ax.set_ylabel("$n$ [photon.eV.cm$^{-3}$]") |
64 | 64 | ||
@@ -80,7 +80,7 @@ for z_index in [1,9,12,15,17]: | @@ -80,7 +80,7 @@ for z_index in [1,9,12,15,17]: | ||
80 | ax2.set_xscale('log') | 80 | ax2.set_xscale('log') |
81 | ax2.set_yscale('log') | 81 | ax2.set_yscale('log') |
82 | ax2.grid(b=True,which='major') | 82 | ax2.grid(b=True,which='major') |
83 | -ax2.legend(loc="best",frameon=False,framealpha=0.5) | 83 | +ax2.legend(loc="best")#,frameon=False,framealpha=0.5) |
84 | ax2.set_xlabel("energy [eV]") | 84 | ax2.set_xlabel("energy [eV]") |
85 | ax2.set_ylabel("$n$ [photon.eV.cm$^{-3}$]") | 85 | ax2.set_ylabel("$n$ [photon.eV.cm$^{-3}$]") |
86 | 86 |
Modules/Analytic.pyc deleted
No preview for this file type
Modules/Angle.py
1 | -from numpy import log10, histogram | 1 | +from numpy import log10, histogram, arange |
2 | from matplotlib.pyplot import figure, show | 2 | from matplotlib.pyplot import figure, show |
3 | from matplotlib import gridspec | 3 | from matplotlib import gridspec |
4 | -from Read import ReadRadial, ReadAngleVsEnergy | 4 | +from Read import ReadRadial, ReadAngleVsEnergy, ReadGeneration |
5 | from Analytic import Analytic_theta | 5 | from Analytic import Analytic_theta |
6 | from Constants import degre | 6 | from Constants import degre |
7 | 7 | ||
@@ -21,7 +21,7 @@ def angle_vs_energy(theta,energy,weight,nbBins=50): | @@ -21,7 +21,7 @@ def angle_vs_energy(theta,energy,weight,nbBins=50): | ||
21 | return enercenter, angle | 21 | return enercenter, angle |
22 | 22 | ||
23 | def radial(theta,weight,nbBins=50): | 23 | def radial(theta,weight,nbBins=50): |
24 | - cond = theta!=0 | 24 | + cond = theta>0 |
25 | theta = log10(theta[cond]) | 25 | theta = log10(theta[cond]) |
26 | weight = weight[cond] | 26 | weight = weight[cond] |
27 | dn,angle2 = histogram(theta,nbBins,range=[log10(1e-3),log10(25)],weights=weight) | 27 | dn,angle2 = histogram(theta,nbBins,range=[log10(1e-3),log10(25)],weights=weight) |
@@ -35,7 +35,7 @@ def radial(theta,weight,nbBins=50): | @@ -35,7 +35,7 @@ def radial(theta,weight,nbBins=50): | ||
35 | 35 | ||
36 | return thetacenter, dndtheta | 36 | return thetacenter, dndtheta |
37 | 37 | ||
38 | -def drawRadial(files,all_source_spectrum=False,all_jets=False): | 38 | +def drawRadial(files,plot_gen=False,plot_energy_range=False): |
39 | ''' | 39 | ''' |
40 | Plot flux versus arrival angle | 40 | Plot flux versus arrival angle |
41 | Input: list of directories | 41 | Input: list of directories |
@@ -45,21 +45,24 @@ def drawRadial(files,all_source_spectrum=False,all_jets=False): | @@ -45,21 +45,24 @@ def drawRadial(files,all_source_spectrum=False,all_jets=False): | ||
45 | ax = fig.add_subplot(111) | 45 | ax = fig.add_subplot(111) |
46 | 46 | ||
47 | for fileId in files: | 47 | for fileId in files: |
48 | - if all_source_spectrum: | ||
49 | - i=1 | ||
50 | - for powerlaw_index in [1,1.5,2,2.5]: | 48 | + theta,dndtheta2 = ReadRadial(fileId,[0,1]) |
49 | + ax.plot(theta,dndtheta2,drawstyle='steps-mid') | ||
50 | + | ||
51 | + if plot_energy_range: | ||
52 | + labels = ["MeV band","GeV band","TeV band"] | ||
53 | + i = 2 | ||
54 | + for n in arange(0,3,1): | ||
51 | theta,dndtheta2 = ReadRadial(fileId,[0,i]) | 55 | theta,dndtheta2 = ReadRadial(fileId,[0,i]) |
52 | - ax.plot(theta,dndtheta2,drawstyle='steps-mid',label="p=%.1f"%powerlaw_index) | 56 | + ax.plot(theta,dndtheta2,drawstyle='steps-mid',label=labels[n]) |
53 | i+=1 | 57 | i+=1 |
54 | - elif all_jets: | 58 | + |
59 | + if plot_gen: | ||
60 | + generation = ReadGeneration(fileId,[0]) | ||
55 | i=5 | 61 | i=5 |
56 | - for jet_opening in ["isotrop","60 deg","30 deg"]: | 62 | + for gen in generation: |
57 | theta,dndtheta2 = ReadRadial(fileId,[0,i]) | 63 | theta,dndtheta2 = ReadRadial(fileId,[0,i]) |
58 | - ax.plot(theta,dndtheta2,drawstyle='steps-mid',label=jet_opening) | 64 | + ax.plot(theta,dndtheta2,drawstyle='steps-mid',label="gen=%.0f"%gen) |
59 | i+=1 | 65 | i+=1 |
60 | - else: | ||
61 | - theta,dndtheta2 = ReadRadial(fileId,[0,5]) | ||
62 | - ax.plot(theta,dndtheta2,drawstyle='steps-mid',label=fileId) | ||
63 | 66 | ||
64 | ax.legend(loc="best") | 67 | ax.legend(loc="best") |
65 | ax.set_xscale('log') | 68 | ax.set_xscale('log') |
@@ -70,7 +73,7 @@ def drawRadial(files,all_source_spectrum=False,all_jets=False): | @@ -70,7 +73,7 @@ def drawRadial(files,all_source_spectrum=False,all_jets=False): | ||
70 | 73 | ||
71 | show() | 74 | show() |
72 | 75 | ||
73 | -def drawAngle_vs_energy(files,all_source_spectrum=False,all_jets=False,PlotAnalytic=False): | 76 | +def drawAngle_vs_energy(files,plot_gen=False,plot_analytic=False): |
74 | ''' | 77 | ''' |
75 | Plot arrival angle versus energy + analytic expression | 78 | Plot arrival angle versus energy + analytic expression |
76 | Input: list of directories | 79 | Input: list of directories |
@@ -80,21 +83,18 @@ def drawAngle_vs_energy(files,all_source_spectrum=False,all_jets=False,PlotAnaly | @@ -80,21 +83,18 @@ def drawAngle_vs_energy(files,all_source_spectrum=False,all_jets=False,PlotAnaly | ||
80 | ax1 = fig.add_subplot(111) | 83 | ax1 = fig.add_subplot(111) |
81 | 84 | ||
82 | for fileId in files: | 85 | for fileId in files: |
83 | - if all_source_spectrum: | ||
84 | - i=1 | ||
85 | - for powerlaw_index in [1,1.5,2,2.5]: | ||
86 | - ener,angle = ReadAngleVsEnergy(fileId,[0,i]) | ||
87 | - p=ax1.plot(ener,angle,drawstyle='steps-mid',label="p=%.1f"%powerlaw_index) | ||
88 | - elif all_jets: | ||
89 | - i=5 | ||
90 | - for jet_opening in ["isotrop","60 deg","30 deg"]: | 86 | + ener,angle = ReadAngleVsEnergy(fileId,[0,1]) |
87 | + p=ax1.plot(ener,angle,drawstyle='steps-mid') | ||
88 | + | ||
89 | + if plot_gen: | ||
90 | + generation = ReadGeneration(fileId,[0]) | ||
91 | + i=2 | ||
92 | + for gen in generation: | ||
91 | ener,angle = ReadAngleVsEnergy(fileId,[0,i]) | 93 | ener,angle = ReadAngleVsEnergy(fileId,[0,i]) |
92 | - p=ax1.plot(ener,angle,drawstyle='steps-mid',label=jet_opening) | ||
93 | - else: | ||
94 | - ener,angle = ReadAngleVsEnergy(fileId,[0,1]) | ||
95 | - p=ax1.plot(ener,angle,drawstyle='steps-mid',label=fileId) | 94 | + ax1.plot(ener,angle,drawstyle='steps-mid',label="gen=%.0f"%gen) |
95 | + i+=1 | ||
96 | 96 | ||
97 | - if PlotAnalytic: | 97 | + if plot_analytic: |
98 | yfit = Analytic_theta(ener,fileId) | 98 | yfit = Analytic_theta(ener,fileId) |
99 | ax1.plot(ener,yfit,'--',color=p[0].get_color(),linewidth=2) | 99 | ax1.plot(ener,yfit,'--',color=p[0].get_color(),linewidth=2) |
100 | 100 |
Modules/Angle.pyc deleted
No preview for this file type
Modules/Constants.pyc deleted
No preview for this file type
Modules/Generation.pyc deleted
No preview for this file type
Modules/Integrand.pyc deleted
No preview for this file type
Modules/Map.py
@@ -15,7 +15,7 @@ philim=float(philim) | @@ -15,7 +15,7 @@ philim=float(philim) | ||
15 | thetalim=float(thetalim) | 15 | thetalim=float(thetalim) |
16 | limits = [[-thetalim,thetalim],[-philim,philim]] | 16 | limits = [[-thetalim,thetalim],[-philim,philim]] |
17 | 17 | ||
18 | -def computeMap(theta,phi,weight,energy,saveId,jet_opening_angle=180,nbBins=50,borne=[180,180]): | 18 | +def computeMap(theta,phi,weight,energy,saveId,nbBins=50,borne=[180,180]): |
19 | ''' | 19 | ''' |
20 | Plot 2D histogram of arrival direction of the photons with energy upper than Elim | 20 | Plot 2D histogram of arrival direction of the photons with energy upper than Elim |
21 | Input: list of directories | 21 | Input: list of directories |
@@ -41,12 +41,8 @@ def computeMap(theta,phi,weight,energy,saveId,jet_opening_angle=180,nbBins=50,bo | @@ -41,12 +41,8 @@ def computeMap(theta,phi,weight,energy,saveId,jet_opening_angle=180,nbBins=50,bo | ||
41 | ax.set_xlabel("$\\theta$ $\\cos(\\phi)$ [deg]") | 41 | ax.set_xlabel("$\\theta$ $\\cos(\\phi)$ [deg]") |
42 | ax.set_ylabel("$\\theta$ $\\sin(\\phi)$ [deg]") | 42 | ax.set_ylabel("$\\theta$ $\\sin(\\phi)$ [deg]") |
43 | ax.grid(b=True,which='major') | 43 | ax.grid(b=True,which='major') |
44 | - if jet_opening_angle == 180: | ||
45 | - ax.set_title(saveId+" - isotrop") | ||
46 | - savefig(resultDirectory+saveId+"/map_isotrop.png") | ||
47 | - else: | ||
48 | - ax.set_title(saveId+" - jet opening angle: %d degre"%(int(jet_opening_angle))) | ||
49 | - savefig(resultDirectory+saveId+"/map_"+str(int(jet_opening_angle))+".png") | 44 | + ax.set_title(saveId+" - isotrop") |
45 | + savefig(resultDirectory+saveId+"/map_isotrop.png") | ||
50 | 46 | ||
51 | #def isotrop(): | 47 | #def isotrop(): |
52 | # return array([[1]]), "isotropic" | 48 | # return array([[1]]), "isotropic" |
Modules/Map.pyc deleted
No preview for this file type
@@ -0,0 +1,56 @@ | @@ -0,0 +1,56 @@ | ||
1 | +from numpy import sort, log10 | ||
2 | +from matplotlib.pyplot import figure, show | ||
3 | +from mpl_toolkits.mplot3d import Axes3D | ||
4 | +from Modules.Read import ReadEnergy, ReadTime, ReadExtraFile | ||
5 | +from Modules.Constants import degre | ||
6 | + | ||
7 | +def drawObservablesSpace(fileId): | ||
8 | + fig = figure() | ||
9 | + ax = fig.add_subplot(232,projection='3d') | ||
10 | + ax1 = fig.add_subplot(233) | ||
11 | + ax2 = fig.add_subplot(231) | ||
12 | + ax3 = fig.add_subplot(235) | ||
13 | + | ||
14 | + energy = ReadEnergy(fileId) | ||
15 | + delay = ReadTime(fileId) | ||
16 | + generation, theta = ReadExtraFile(fileId,[3,4]) | ||
17 | + theta*=degre | ||
18 | + | ||
19 | + colors=['b','g','r','m','c','y'] | ||
20 | + i=0 | ||
21 | + | ||
22 | + for gen in sort(list(set(generation))): | ||
23 | + cond = (generation==gen) & (delay>0) & (theta>0) | ||
24 | + ax.scatter(log10(energy[cond]),log10(theta[cond]),log10(delay[cond]),color=colors[i],label="gen = %.0f"%gen) | ||
25 | + ax1.scatter(energy[cond],delay[cond],color=colors[i]) | ||
26 | + ax2.scatter(theta[cond],delay[cond],color=colors[i]) | ||
27 | + ax3.scatter(theta[cond],energy[cond],color=colors[i]) | ||
28 | + i+=1 | ||
29 | + | ||
30 | + ax.legend(loc="best") | ||
31 | + #ax.set_xscale('log') | ||
32 | + #ax.set_yscale('log') | ||
33 | + #ax.set_zscale('log') | ||
34 | + ax.set_xlabel("energy [GeV]") | ||
35 | + ax.set_ylabel("$\\theta$ [deg]") | ||
36 | + ax.set_zlabel("Time delay [s]") | ||
37 | + | ||
38 | + ax1.grid(b=True,which='major') | ||
39 | + ax1.set_xscale('log') | ||
40 | + ax1.set_yscale('log') | ||
41 | + ax1.set_xlabel("energy [GeV]") | ||
42 | + ax1.set_ylabel("Time delay [s]") | ||
43 | + | ||
44 | + ax2.grid(b=True,which='major') | ||
45 | + ax2.set_xscale('log') | ||
46 | + ax2.set_yscale('log') | ||
47 | + ax2.set_xlabel("$\\theta$ [deg]") | ||
48 | + ax2.set_ylabel("Time delay [s]") | ||
49 | + | ||
50 | + ax3.grid(b=True,which='major') | ||
51 | + ax3.set_xscale('log') | ||
52 | + ax3.set_yscale('log') | ||
53 | + ax3.set_xlabel("$\\theta$ [deg]") | ||
54 | + ax3.set_ylabel("energy [GeV]") | ||
55 | + | ||
56 | + show() |
Modules/Read.py
@@ -60,5 +60,5 @@ def ReadRadial(fileName,cols=[0,1,2,3,4]): | @@ -60,5 +60,5 @@ def ReadRadial(fileName,cols=[0,1,2,3,4]): | ||
60 | def ReadTiming(fileName,cols=[0,1,2,3,4]): | 60 | def ReadTiming(fileName,cols=[0,1,2,3,4]): |
61 | return loadtxt(resultDirectory+fileName+"/Timing.txt",unpack=True,usecols=cols) | 61 | return loadtxt(resultDirectory+fileName+"/Timing.txt",unpack=True,usecols=cols) |
62 | 62 | ||
63 | -def ReadGeneration(fileName,cols=[0,1,2,3,4]): | 63 | +def ReadGeneration(fileName,cols=[0,1]): |
64 | return loadtxt(resultDirectory+fileName+"/Generation.txt",unpack=True,usecols=cols) | 64 | return loadtxt(resultDirectory+fileName+"/Generation.txt",unpack=True,usecols=cols) |
Modules/Read.pyc deleted
No preview for this file type
Modules/Spectrum.py
1 | from numpy import histogram, log10, sqrt, array | 1 | from numpy import histogram, log10, sqrt, array |
2 | from matplotlib.pyplot import figure, show, setp | 2 | from matplotlib.pyplot import figure, show, setp |
3 | from matplotlib import gridspec | 3 | from matplotlib import gridspec |
4 | -from Read import ReadSpectrum, ReadSourceSpectrum | 4 | +from Read import ReadSpectrum, ReadSourceSpectrum, ReadGeneration |
5 | from Constants import degre | 5 | from Constants import degre |
6 | -from Analytic import Ethreshold_gg | 6 | +from Analytic import Ethreshold_gg, Analytic_flux, Eic |
7 | 7 | ||
8 | -def spectrum(energy,weight,generation=[],nbBins=100): | 8 | +def spectrum(energy,weight,nbBins=100): |
9 | ''' | 9 | ''' |
10 | Compute flux versus energy | 10 | Compute flux versus energy |
11 | Input: events energy and weight (optional: number of bins) | 11 | Input: events energy and weight (optional: number of bins) |
@@ -19,20 +19,9 @@ def spectrum(energy,weight,generation=[],nbBins=100): | @@ -19,20 +19,9 @@ def spectrum(energy,weight,generation=[],nbBins=100): | ||
19 | enercenter=(ener[1:nbBins+1]+ener[0:nbBins])/2 | 19 | enercenter=(ener[1:nbBins+1]+ener[0:nbBins])/2 |
20 | binSize=ener[1:nbBins+1]-ener[0:nbBins] | 20 | binSize=ener[1:nbBins+1]-ener[0:nbBins] |
21 | flux = enercenter**2 * flux/binSize | 21 | flux = enercenter**2 * flux/binSize |
22 | + return enercenter,flux | ||
22 | 23 | ||
23 | - if generation == []: | ||
24 | - return enercenter,flux | ||
25 | - else: | ||
26 | - cond=(generation==0) | ||
27 | - flux_0,ener_0=histogram(energy[cond],nbBins,range=[log10(Emin),log10(Emax)],weights=weight[cond]) | ||
28 | - ener_0 = 10**ener_0 | ||
29 | - enercenter_0=(ener_0[1:nbBins+1]+ener_0[0:nbBins])/2 | ||
30 | - binSize=ener_0[1:nbBins+1]-ener_0[0:nbBins] | ||
31 | - flux_0 = enercenter_0**2 * flux_0/binSize | ||
32 | - return enercenter,flux,flux_0 | ||
33 | - | ||
34 | - | ||
35 | -def drawSpectrum(files,all_source_spectrum=False,all_jets=False,PlotAnalytic=False): | 24 | +def drawSpectrum(files,plot_gen=False,plot_source=False,plot_analytic=False): |
36 | ''' | 25 | ''' |
37 | Plot flux versus energy | 26 | Plot flux versus energy |
38 | Input: list of directories | 27 | Input: list of directories |
@@ -47,59 +36,36 @@ def drawSpectrum(files,all_source_spectrum=False,all_jets=False,PlotAnalytic=Fal | @@ -47,59 +36,36 @@ def drawSpectrum(files,all_source_spectrum=False,all_jets=False,PlotAnalytic=Fal | ||
47 | ax1 = fig.add_subplot(111) | 36 | ax1 = fig.add_subplot(111) |
48 | 37 | ||
49 | for fileId in files: | 38 | for fileId in files: |
50 | - if all_source_spectrum: | ||
51 | - i=1 | ||
52 | - j=1 | ||
53 | - for powerlaw_index in [1,1.5,2,2.5]: | ||
54 | - # read files | ||
55 | - Es,Fs = ReadSourceSpectrum(fileId,[0,i]) | ||
56 | - p = ax1.plot(Es,Fs,linestyle=':') | ||
57 | - # draw full spectrum | ||
58 | - ener,flux,flux_0 = ReadSpectrum(fileId,[0,j,j+1]) | ||
59 | - ax1.plot(ener,flux,color=p[0].get_color(),drawstyle='steps-mid',label="p=%.1f"%powerlaw_index) | ||
60 | - # primary gamma-rays contribution | ||
61 | - #ax1.plot(ener,flux_0,color=p[0].get_color(),linestyle='--',drawstyle='steps-mid') | ||
62 | - #contrib=flux_0/flux | ||
63 | - #ax2.plot(ener,contrib,drawstyle='steps-mid',color=p[0].get_color()) | ||
64 | - i+=1 | ||
65 | - j+=2 | ||
66 | - elif all_jets: | ||
67 | - i=5 | ||
68 | - j=9 | ||
69 | - for jet_opening in ["isotrop","60 deg","30 deg"]: | 39 | + # draw full spectrum |
40 | + ener,flux = ReadSpectrum(fileId,[0,1]) | ||
41 | + p = ax1.plot(ener,flux,drawstyle='steps-mid') | ||
42 | + | ||
43 | + if plot_gen: | ||
44 | + generation = ReadGeneration(fileId,[0]) | ||
45 | + j=2 | ||
46 | + for gen in generation: | ||
70 | # read files | 47 | # read files |
71 | - Es,Fs = ReadSourceSpectrum(fileId,[0,i]) | ||
72 | - p = ax1.plot(Es,Fs,linestyle=':') | ||
73 | - # draw full spectrum | ||
74 | - ener,flux,flux_0 = ReadSpectrum(fileId,[0,j,j+1]) | ||
75 | - ax1.plot(ener,flux,color=p[0].get_color(),drawstyle='steps-mid',label=jet_opening) | ||
76 | - # primary gamma-rays contribution | ||
77 | - #ax1.plot(ener,flux_0,color=p[0].get_color(),linestyle='--',drawstyle='steps-mid') | ||
78 | - #contrib=flux_0/flux | ||
79 | - #ax2.plot(ener,contrib,drawstyle='steps-mid',color=p[0].get_color()) | ||
80 | - i+=1 | ||
81 | - j+=2 | 48 | + ener,flux = ReadSpectrum(fileId,[0,j]) |
49 | + ax1.plot(ener,flux,drawstyle='steps-mid',label="gen=%.0f"%gen) | ||
50 | + j+=1 | ||
82 | 51 | ||
83 | - else: | ||
84 | - # read files | ||
85 | - #Es,Fs = ReadSourceSpectrum(fileId,[0,3]) | ||
86 | - #p = ax1.plot(Es,Fs,linestyle=':') | ||
87 | - # draw full spectrum | ||
88 | - ener,flux,flux_0 = ReadSpectrum(fileId,[0,5,6]) | ||
89 | - ax1.plot(ener,flux,drawstyle='steps-mid') | ||
90 | - #ax1.plot(ener,flux,color=p[0].get_color(),drawstyle='steps-mid',label=fileId) | ||
91 | - # primary gamma-rays contribution | ||
92 | - #ax1.plot(ener,flux_0,color=p[0].get_color(),linestyle='--',drawstyle='steps-mid') | ||
93 | - #contrib=flux_0/flux | ||
94 | - #ax2.plot(ener,contrib,drawstyle='steps-mid',color=p[0].get_color()) | 52 | + if plot_source: |
53 | + Es,Fs = ReadSourceSpectrum(fileId,[0,1]) | ||
54 | + ax1.plot(Es,Fs,color=p[0].get_color(),linestyle=':') | ||
95 | 55 | ||
96 | - if PlotAnalytic: | 56 | + if plot_analytic: |
97 | minEner=min(ener) | 57 | minEner=min(ener) |
98 | - alpha=flux[ener==minEner]/sqrt(minEner) | ||
99 | - ax1.plot(ener,alpha*sqrt(ener),'--m',linewidth=2) | ||
100 | - ax1.plot(ener,ener**(0)*max(flux)*0.95,'--m',linewidth=2) | ||
101 | - ax1.axvline(x=Ethreshold_gg(), ymin=0., ymax = 1., color='r', linewidth=2) | ||
102 | - ax1.axvline(x=1e4, ymin=0., ymax = 1., color='g', linewidth=2) | 58 | + #alpha=flux[ener==minEner]/sqrt(minEner) |
59 | + #ax1.plot(ener,alpha*sqrt(ener/100),'.-g',linewidth=2) | ||
60 | + ax1.plot(ener,2*Analytic_flux(ener),'--g',linewidth=1) | ||
61 | + Elim= Eic(Ethreshold_gg()/2) | ||
62 | + alpha = 2*4.63e3/Elim**(1/4.) | ||
63 | + ax1.plot(ener,alpha*sqrt(ener),'--r',linewidth=1) | ||
64 | + alpha = 2*14.6e3 | ||
65 | + ax1.plot(ener,alpha*(ener/100)**(1/4.),'--m',linewidth=1) | ||
66 | + #ax1.plot(ener,ener**(0)*max(flux)*0.95,'--m',linewidth=2) | ||
67 | + #ax1.axvline(x=Ethreshold_gg(), ymin=0., ymax = 1., color='r', linewidth=2) | ||
68 | + #ax1.axvline(x=1e4, ymin=0., ymax = 1., color='g', linewidth=2) | ||
103 | 69 | ||
104 | ax1.legend(loc="best") | 70 | ax1.legend(loc="best") |
105 | ax1.set_xscale('log') | 71 | ax1.set_xscale('log') |
Modules/Spectrum.pyc deleted
No preview for this file type
Modules/Timing.py
1 | -from numpy import histogram, log10, shape, arange, pi, convolve | 1 | +from numpy import histogram, log10, shape, arange, pi, convolve, r_ |
2 | from matplotlib.pyplot import figure, show | 2 | from matplotlib.pyplot import figure, show |
3 | -from Read import ReadTime, ReadTiming, ReadExtraFile, ReadProfile, ReadEnergy | 3 | +from Read import ReadTime, ReadTiming, ReadExtraFile, ReadProfile, ReadEnergy, ReadGeneration |
4 | from Constants import yr, degre | 4 | from Constants import yr, degre |
5 | from Analytic import Analytic_delay_vs_theta | 5 | from Analytic import Analytic_delay_vs_theta |
6 | 6 | ||
@@ -23,50 +23,35 @@ def timing(time,weight,nbBins=100): | @@ -23,50 +23,35 @@ def timing(time,weight,nbBins=100): | ||
23 | binSize=dt[1:nbBins+1]-dt[0:nbBins] | 23 | binSize=dt[1:nbBins+1]-dt[0:nbBins] |
24 | dNdt=dN/binSize *timecenter | 24 | dNdt=dN/binSize *timecenter |
25 | 25 | ||
26 | - return timecenter, dNdt | 26 | + return timecenter, dNdt#/max(dNdt) |
27 | 27 | ||
28 | -def drawTiming(files,plot_case=0): | 28 | +def drawTiming(files,plot_gen=False,plot_energy_range=False): |
29 | ''' | 29 | ''' |
30 | Plot flux versus time delay | 30 | Plot flux versus time delay |
31 | Input: list of directories | 31 | Input: list of directories |
32 | - plot_case: (0) nothing, (1) all source spectrum, (2) all jets, (3) by energy band, | ||
33 | - (4) by generation | ||
34 | Output: graph of flux versus time delay | 32 | Output: graph of flux versus time delay |
35 | ''' | 33 | ''' |
36 | fig = figure() | 34 | fig = figure() |
37 | ax = fig.add_subplot(111) | 35 | ax = fig.add_subplot(111) |
38 | for fileId in files: | 36 | for fileId in files: |
39 | - if plot_case == 1: | ||
40 | - i=1 | ||
41 | - for powerlaw_index in [1,1.5,2,2.5]: | ||
42 | - delta_t,dNdt = ReadTiming(fileId,[0,i]) | ||
43 | - ax.plot(delta_t,dNdt,linestyle="steps-mid",label="p=%.1f"%powerlaw_index) | ||
44 | - i+=1 | ||
45 | - elif plot_case == 2: | ||
46 | - i=5 | ||
47 | - for jet_opening in ["isotrop","60 degre","30 degre"]: | ||
48 | - delta_t,dNdt = ReadTiming(fileId,[0,i]) | ||
49 | - ax.plot(delta_t,dNdt,linestyle="steps-mid",label=jet_opening) | ||
50 | - i+=1 | ||
51 | - elif plot_case == 3: | ||
52 | - i=8 | ||
53 | - Emin = [1e-3,1e0,1e3] #GeV | ||
54 | - Emax = [1e0,1e3,1e5] #GeV | 37 | + delta_t,dNdt = ReadTiming(fileId,[0,1]) |
38 | + p=ax.plot(delta_t,dNdt,linestyle="steps-mid") | ||
39 | + | ||
40 | + if plot_energy_range: | ||
41 | + labels = ["MeV band","GeV band","TeV band"] | ||
42 | + i = 2 | ||
55 | for n in arange(0,3,1): | 43 | for n in arange(0,3,1): |
56 | - label = "%1.0e Gev"%Emin[n]+"< $E_\\gamma$ < %1.0e Gev"%Emax[n] | ||
57 | delta_t,dNdt = ReadTiming(fileId,[0,i]) | 44 | delta_t,dNdt = ReadTiming(fileId,[0,i]) |
58 | - ax.plot(delta_t,dNdt,linestyle="steps-mid",label=label) | 45 | + ax.plot(delta_t,dNdt,linestyle="steps-mid",label=labels[n]) |
59 | i+=1 | 46 | i+=1 |
60 | - elif plot_case == 4: | ||
61 | - i=11 | ||
62 | - generation = ReadExtraFile(fileId,[3]) | ||
63 | - for gen in list(set(generation)): | 47 | + |
48 | + if plot_gen: | ||
49 | + generation = ReadGeneration(fileId,[0]) | ||
50 | + i=5 | ||
51 | + for gen in generation: | ||
64 | delta_t,dNdt = ReadTiming(fileId,[0,i]) | 52 | delta_t,dNdt = ReadTiming(fileId,[0,i]) |
65 | ax.plot(delta_t,dNdt,linestyle="steps-mid",label="gen=%.0f"%gen) | 53 | ax.plot(delta_t,dNdt,linestyle="steps-mid",label="gen=%.0f"%gen) |
66 | i+=1 | 54 | i+=1 |
67 | - else: | ||
68 | - delta_t,dNdt = ReadTiming(fileId,[0,3]) | ||
69 | - ax.plot(delta_t,dNdt,linestyle="steps-mid",label=fileId) | ||
70 | 55 | ||
71 | ax.set_xscale('log') | 56 | ax.set_xscale('log') |
72 | ax.set_yscale('log') | 57 | ax.set_yscale('log') |
@@ -81,12 +66,19 @@ def drawConvolveTiming(files): | @@ -81,12 +66,19 @@ def drawConvolveTiming(files): | ||
81 | fig = figure() | 66 | fig = figure() |
82 | ax = fig.add_subplot(111) | 67 | ax = fig.add_subplot(111) |
83 | for fileId in files: | 68 | for fileId in files: |
84 | - delta_t,dNdt1 = ReadTiming(fileId,[0,8]) # MeV band | ||
85 | - delta_t,dNdt2 = ReadTiming(fileId,[0,9]) # GeV band | ||
86 | - delta_t,dNdt3 = ReadTiming(fileId,[0,10]) # TeV band | ||
87 | - ax.plot(delta_t,convolve(dNdt1,dNdt2,'same'),linestyle="steps-mid",label="MeV - GeV band") | ||
88 | - ax.plot(delta_t,convolve(dNdt2,dNdt3,'same'),linestyle="steps-mid",label="GeV - TeV band") | ||
89 | - ax.plot(delta_t,convolve(dNdt1,dNdt3,'same'),linestyle="steps-mid",label="MeV - TeV band") | 69 | + delta_t,dNdt1 = ReadTiming(fileId,[0,2]) # MeV band |
70 | + delta_t,dNdt2 = ReadTiming(fileId,[0,3]) # GeV band | ||
71 | + delta_t,dNdt3 = ReadTiming(fileId,[0,4]) # TeV band | ||
72 | + conv1 = convolve(dNdt1,dNdt2,'same') | ||
73 | + conv2 = convolve(dNdt2,dNdt3,'same') | ||
74 | + conv3 = convolve(dNdt1,dNdt3,'same') | ||
75 | + ax.plot(delta_t,conv1/max(conv1),linestyle="steps-mid",label="MeV - GeV band") | ||
76 | + ax.plot(delta_t,conv2/max(conv2),linestyle="steps-mid",label="GeV - TeV band") | ||
77 | + ax.plot(delta_t,conv3/max(conv3),linestyle="steps-mid",label="MeV - TeV band") | ||
78 | + print fileId, " =====================================" | ||
79 | + print " MeV - GeV band: ",delta_t[r_[True, conv1[1:] > conv1[:-1]] & r_[conv1[:-1] > conv1[1:], True]] | ||
80 | + print " GeV - TeV band: ",delta_t[r_[True, conv2[1:] > conv2[:-1]] & r_[conv2[:-1] > conv2[1:], True]] | ||
81 | + print " MeV - TeV band: ",delta_t[r_[True, conv3[1:] > conv3[:-1]] & r_[conv3[:-1] > conv3[1:], True]] | ||
90 | 82 | ||
91 | ax.set_xscale('log') | 83 | ax.set_xscale('log') |
92 | ax.set_yscale('log') | 84 | ax.set_yscale('log') |
@@ -117,21 +109,26 @@ def drawDelay_vs_angle(fileId): | @@ -117,21 +109,26 @@ def drawDelay_vs_angle(fileId): | ||
117 | ax = fig.add_subplot(111) | 109 | ax = fig.add_subplot(111) |
118 | nbBins = 100 | 110 | nbBins = 100 |
119 | 111 | ||
120 | - theta = ReadExtraFile(fileId,[4])*degre | 112 | + generation, theta = ReadExtraFile(fileId,cols=[3,4]) |
113 | + theta *= degre | ||
121 | energy = ReadEnergy(fileId) | 114 | energy = ReadEnergy(fileId) |
122 | delay = ReadTime(fileId) | 115 | delay = ReadTime(fileId) |
123 | 116 | ||
124 | Emin = [1e-3,1e0,1e3] #GeV | 117 | Emin = [1e-3,1e0,1e3] #GeV |
125 | Emax = [1e0,1e3,1e5] #GeV | 118 | Emax = [1e0,1e3,1e5] #GeV |
126 | - for n in arange(0,3,1): | ||
127 | - cond= (energy>Emin[n]) & (energy<Emax[n]) | ||
128 | - if Emin[n]==1e-3: | ||
129 | - label="MeV band" | ||
130 | - if Emin[n]==1e0: | ||
131 | - label="GeV band" | ||
132 | - if Emin[n]==1e3: | ||
133 | - label="TeV band" | ||
134 | - ax.plot(theta[cond],delay[cond],".",label=label) | 119 | + |
120 | + for gen in list(set(generation)): | ||
121 | + cond = generation==gen | ||
122 | + ax.plot(theta[cond],delay[cond],",",label="gen = %.0f"%gen) | ||
123 | + #for n in arange(0,3,1): | ||
124 | + # cond= (energy>Emin[n]) & (energy<Emax[n]) | ||
125 | + # if Emin[n]==1e-3: | ||
126 | + # label="MeV band" | ||
127 | + # if Emin[n]==1e0: | ||
128 | + # label="GeV band" | ||
129 | + # if Emin[n]==1e3: | ||
130 | + # label="TeV band" | ||
131 | + # ax.plot(theta[cond],delay[cond],".",label=label) | ||
135 | 132 | ||
136 | dt,angle=delay_vs_theta(theta,delay,nbBins) | 133 | dt,angle=delay_vs_theta(theta,delay,nbBins) |
137 | ax.plot(angle,dt,color='m',linestyle="steps-mid",linewidth=2) | 134 | ax.plot(angle,dt,color='m',linestyle="steps-mid",linewidth=2) |
Modules/Timing.pyc deleted
No preview for this file type
Modules/Weight.pyc deleted
No preview for this file type
Modules/__init__.py
@@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
1 | +from Constants import * |
Modules/__init__.pyc deleted
No preview for this file type
@@ -0,0 +1,57 @@ | @@ -0,0 +1,57 @@ | ||
1 | +#!/usr/bin/python | ||
2 | + | ||
3 | +from sys import argv | ||
4 | +import matplotlib.pyplot as plt | ||
5 | +from matplotlib import gridspec | ||
6 | +from numpy import * | ||
7 | +from scipy.integrate import quad | ||
8 | +from Modules.Analytic import Ethreshold_gg | ||
9 | + | ||
10 | +c=2.99792458e10 # cm.s-1 | ||
11 | +Mpc=(3.0856776e+16)*1e8 # Mpc to cm | ||
12 | +H0=67.8*1e5/(Mpc) # s-1 | ||
13 | +omegaM = 0.3 | ||
14 | +omegaK = 0 | ||
15 | +omegaL = 0.7 | ||
16 | +zlim=-0. | ||
17 | +def properIntegrand(z): | ||
18 | + return -c/(H0*(1+z)*sqrt(omegaM*(1+z)**3+omegaK*(1+z)**2+omegaL)) | ||
19 | +def comobileIntegrand(z): | ||
20 | + return -c/(H0*sqrt(omegaM*(1+z)**3+omegaK*(1+z)**2+omegaL)) | ||
21 | + | ||
22 | +color=['b','r','g','m','c','y'] | ||
23 | + | ||
24 | +# Proper distance figure | ||
25 | +#======================== | ||
26 | +fig1 = plt.figure() | ||
27 | +ax11 = fig1.add_subplot(111) | ||
28 | + | ||
29 | +labels=["0","0.5","1","2","3"] | ||
30 | +theory=[1,2,3,4,5] | ||
31 | +ind=0 | ||
32 | +for lab in labels: | ||
33 | + # theoritical curve =================================================== | ||
34 | + # f: without cosmo | ||
35 | + # g: with cosmo | ||
36 | + e,f,g=loadtxt('lambda_e.dat',unpack=True,usecols=[0,int(theory[ind]),int(theory[ind])+5]) | ||
37 | + e = e*511.e3/1.e9 #GeV | ||
38 | + cond= (e>100) & (e<1e5) | ||
39 | + e=e[cond] | ||
40 | + g=g[cond] | ||
41 | + f=f[cond] | ||
42 | + p = ax11.plot(e,g,"-"+color[ind],label="z = "+lab) | ||
43 | + ax11.plot(e,f,color=p[0].get_color(),linestyle='--') | ||
44 | + | ||
45 | + ind=ind+1 | ||
46 | + | ||
47 | +ax11.axvline(x=Ethreshold_gg(), ymin=0., ymax = 1., color='r', linewidth=2) | ||
48 | + | ||
49 | +ax11.legend(loc="best") | ||
50 | +ax11.grid(b=True,which='major') | ||
51 | +ax11.set_ylim([1e-4,1e4]) | ||
52 | +ax11.set_xscale('log') | ||
53 | +ax11.set_yscale('log') | ||
54 | +ax11.set_xlabel("energy [GeV]") | ||
55 | +ax11.set_ylabel("$\lambda_{\gamma\gamma}$ [Mpc]") | ||
56 | + | ||
57 | +plt.show() |