Commit 6633967c42a2496cc15d83555ae091af83b00163

Authored by Thomas Fitoussi
1 parent 631c85a9
Exists in master

Correction on the computation of the spectrum for generation==0

Analysis.py
... ... @@ -7,14 +7,18 @@ from Modules.Spectrum import spectrum
7 7 from Modules.Angle import radial, angle_vs_energy
8 8 from Modules.Timing import timing
9 9  
10   -def error(error_type):
11   - print error_type
12   - exit()
  10 +def InProgress(fileId,i,Nmax):
  11 + print "Work on ", fileId, ": ", (i*100)/Nmax, "% done"
13 12  
14   -if shape(argv)[0] < 2:
15   - error("not enough arguments (at least 1)")
  13 +if shape(argv)[0] < 2:
  14 + print "not enough arguments (at least 1)"
  15 + exit()
16 16  
  17 +#================================================================#
  18 +# Parameters
  19 +#================================================================#
17 20 folder = "Results/"
  21 +PowerSpectrum=[1,1.5,2,2.5]
18 22  
19 23 for fileId in argv[1:]:
20 24 # read files
... ... @@ -23,6 +27,17 @@ for fileId in argv[1:]:
23 27 weightini, generation, theta_arrival, Esource = ReadExtraFile(fileId,[2,3,4,5])
24 28 nbPhotonsEmitted=ReadProfile(fileId,[3])
25 29  
  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]
  40 +
26 41 Gen_contrib = []
27 42 Gen_cont = zeros((int(max(generation))+1))
28 43 Source = []
... ... @@ -31,9 +46,15 @@ for fileId in argv[1:]:
31 46 Angle_Energy = []
32 47 Timing = []
33 48  
34   - for powerlaw_index in [1,1.5,2,2.5]:
  49 + for powerlaw_index in PowerSpectrum:
35 50 # apply source spectrum
36   - weight = weightini*(Esource)**(1-powerlaw_index)
  51 + weight_source = Esource**(1-powerlaw_index)
  52 + weight = weightini* weight_source
  53 +
  54 + print "%e" %(max(weight_source)/min(weight_source))
  55 +
  56 + #cond = (energy>95) & (energy<105) & (generation==0)
  57 + #print weightini[cond], weight[cond]
37 58  
38 59 #=============================================================================#
39 60 # GENERATION CONTRIBUTION
... ... @@ -52,8 +73,9 @@ for fileId in argv[1:]:
52 73 nbBins = 100
53 74 # draw source spectrum
54 75 Es=array(list(set(Esource)))
  76 + print shape(Es)
55 77 Ws= (Es)**(1-powerlaw_index)
56   - Es,Fs = spectrum(Es,Ws,nbBins)
  78 + Es,Fs = spectrum(Es,Ws,nbBins=nbBins)
57 79 Es=Es[:,newaxis]
58 80 Fs=Fs[:,newaxis]
59 81 if Source==[]:
... ... @@ -62,11 +84,8 @@ for fileId in argv[1:]:
62 84 else:
63 85 Source = append(Source,Fs,axis=1)
64 86  
65   - # primary gamma-rays contribution
66   - cond = (generation==0)
67   - ener,flux_0 = spectrum(energy[cond],weight[cond],nbBins)
68   - # full spectrum
69   - ener,flux = spectrum(energy,weight,nbBins)
  87 + # primary gamma-rays contribution and full spectrum
  88 + ener,flux,flux_0 = spectrum(energy,weight,generation,nbBins)
70 89 ener=ener[:,newaxis]
71 90 flux=flux[:,newaxis]
72 91 flux_0=flux_0[:,newaxis]
... ... @@ -113,6 +132,8 @@ for fileId in argv[1:]:
113 132 else:
114 133 Timing = append(Timing,dNdt,axis=1)
115 134  
  135 + InProgress(fileId,PowerSpectrum.index(powerlaw_index)+1,shape(PowerSpectrum)[0])
  136 +
116 137 savetxt(folder+fileId+"/Generation.txt",Gen_contrib)
117 138 savetxt(folder+fileId+"/Spectrum.txt",Spectrum)
118 139 savetxt(folder+fileId+"/Source_spectrum.txt",Source)
... ...
Modules/Angle.pyc
No preview for this file type
Modules/Generation.py
... ... @@ -15,12 +15,11 @@ def drawGeneration(files):
15 15 i=1
16 16 for powerlaw_index in [1,1.5,2,2.5]:
17 17 generation, ratio = ReadGeneration(fileId,[0,i])
18   - ax.plot(generation-0.5,ratio,drawstyle='steps-mid',label="p=%.1f"%powerlaw_index)
  18 + ax.plot(generation,ratio,drawstyle='steps-mid',label="p=%.1f"%powerlaw_index)
19 19  
20 20 xtick=arange(9)
21 21 ax.legend(loc='best')
22   - ax.set_xticks(xtick+0.5)
23   - ax.set_xticklabels(xtick)
  22 + ax.set_yscale('log')
24 23 ax.set_xlabel("Generation")
25 24 ax.set_ylabel("Ratio of events [%]")
26 25  
... ...
Modules/Generation.pyc
No preview for this file type
Modules/Spectrum.py
... ... @@ -5,20 +5,32 @@ from Read import ReadSpectrum, ReadSourceSpectrum
5 5 from Constants import degre
6 6 from Analytic import Ethreshold_gg
7 7  
8   -def spectrum(energy,weight,nbBins=100):
  8 +def spectrum(energy,weight,generation=[],nbBins=100):
9 9 '''
10 10 Compute flux versus energy
11 11 Input: events energy and weight (optional: number of bins)
12 12 Output: energy, flux (E^2 dN/dE)
13 13 '''
  14 + Emin=min(energy)
  15 + Emax=max(energy)
14 16 energy =log10(energy)
15   - flux,ener=histogram(energy,nbBins,weights=weight)
  17 + flux,ener=histogram(energy,nbBins,range=[log10(Emin),log10(Emax)],weights=weight)
16 18 ener = 10**ener
17 19 enercenter=(ener[1:nbBins+1]+ener[0:nbBins])/2
18 20 binSize=ener[1:nbBins+1]-ener[0:nbBins]
19 21 flux = enercenter**2 * flux/binSize
20   - flux /= max(flux) #nbPhotonsEmitted
21   - return enercenter,flux
  22 +
  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 +
22 34  
23 35 def drawSpectrum(files,PlotAnalytic=False):
24 36 '''
... ... @@ -34,19 +46,19 @@ def drawSpectrum(files,PlotAnalytic=False):
34 46 ax2 = fig.add_subplot(gs[1],sharex=ax1)
35 47  
36 48 for fileId in files:
37   - i=1
38   - j=1
  49 + i=1#3
  50 + j=1#5
39 51 for powerlaw_index in [1,1.5,2,2.5]:
40 52 # read files
41 53 Es,Fs = ReadSourceSpectrum(fileId,[0,i])
42   - p = ax1.plot(Es,Fs,drawstyle='--')
  54 + p = ax1.plot(Es,Fs,drawstyle='.')
43 55 # draw full spectrum
44 56 ener,flux,flux_0 = ReadSpectrum(fileId,[0,j,j+1])
45   - ax1.plot(ener,flux,color=p[0].get_color(),drawstyle='-',label="p=%.1f"%powerlaw_index)
  57 + ax1.plot(ener,flux,color=p[0].get_color(),drawstyle='steps-mid',label="p=%.1f"%powerlaw_index)
46 58 # primary gamma-rays contribution
47   - ax1.plot(ener,flux_0,color=p[0].get_color(),linestyle='-.')
  59 + ax1.plot(ener,flux_0,color=p[0].get_color(),linestyle='--',drawstyle='steps-mid')
48 60 contrib=flux_0/flux
49   - ax2.plot(ener,contrib,'-',color=p[0].get_color())
  61 + ax2.plot(ener,contrib,drawstyle='steps-mid',color=p[0].get_color())
50 62  
51 63 i+=1
52 64 j+=2
... ...
Modules/Spectrum.pyc
No preview for this file type
Modules/Timing.py
... ... @@ -56,9 +56,9 @@ def drawDelay_vs_angle(fileId):
56 56 ax = fig.add_subplot(111)
57 57 nbBins = 100
58 58  
59   - theta = ReadExtraFile(fileId,[4])
60   - energy = ReadEnergy(fileId)
61   - delay = ReadTime(fileId)
  59 + theta = ReadExtraFile(fileId,[4])
  60 + energy = ReadEnergy(fileId)
  61 + delay = ReadTime(fileId)
62 62  
63 63 for n in arange(0,8,2):
64 64 Emin = 10**(3-n) #GeV
... ... @@ -74,14 +74,14 @@ def drawDelay_vs_angle(fileId):
74 74 dtheta=10**dtheta
75 75 thetacenter=(dtheta[1:nbBins+1]+dtheta[0:nbBins])/2
76 76 dt=dt/dN
77   - ax.plot(thetacenter,dt,color='k',linestyle="steps-mid",linewidth=2)
  77 + ax.plot(thetacenter,dt,color='m',linestyle="steps-mid",linewidth=2)
78 78  
79 79 thmin = 1.e-8
80 80 thmax = pi/2.
81 81 nth = 1000
82 82 th = thmin*(thmax/thmin)**(arange(nth)/(nth-1.))
83 83 delay_fit = Analytic_delay_vs_theta(th,fileId)
84   - ax.plot(th,delay_fit,'--m',linewidth=2)
  84 + ax.plot(th,delay_fit,'--k',linewidth=2)
85 85  
86 86 ax.set_xscale('log')
87 87 ax.set_yscale('log')
... ...
Modules/Timing.pyc
No preview for this file type