Blame view

modules/maps.py 2.16 KB
28843f23   Thomas Fitoussi   Put radial distri...
1
2
from numpy import shape, histogram2d, arange, newaxis, array, nditer, zeros, histogram
from numpy import sqrt, pi, exp, log, log10, sin, cos, where
28843f23   Thomas Fitoussi   Put radial distri...
3
from matplotlib.pyplot import figure, matshow, savefig, show
7030f150   Thomas Fitoussi   Full reorganisati...
4
from matplotlib.colors import LogNorm
138898c8   Thomas Fitoussi   Computation of ra...
5
#from scipy.signal import convolve2d
30f3bf5d   Thomas Fitoussi   Adapt reading of ...
6
from read import  ReadRadial, ReadAngleVsEnergy
7030f150   Thomas Fitoussi   Full reorganisati...
7

f5a75019   Thomas Fitoussi   Rewrite Analysis....
8
def computeMap(theta,phi,weight,energy,saveId,nbBins=50,borne=[180,180]):
f4246390   Thomas Fitoussi   Improve angular d...
9
10
11
12
13
14
15
16
   '''
      Plot 2D histogram of arrival direction of the photons with energy upper than Elim
      Input: list of directories
      Input (optional): lower energy limit (in GeV (default = 100MeV)
      Input (optional): nature of the source (default isotrop) 
      Input (optional): limits on theta, phi 
      Output: 2D histogram of theta cos(phi), theta sin(phi)
   '''
d943e502   Thomas Fitoussi   Update 'analysis'...
17
   fig = figure(figsize=(12,9))
188a8c6a   Thomas Fitoussi   Update analysis 2...
18
19
20
21
22
23
24
   ax = fig.add_subplot(111)

   step = 2*array(borne,dtype=float)/nbBins
   philim=float(borne[0])
   thetalim=float(borne[1])
   bining = array([int(2*philim/step[0])+1,int(2*thetalim/step[1])+1])
   limits = [[-thetalim,thetalim],[-philim,philim]]
49a0fe94   Thomas Fitoussi   Add direct printi...
25

28843f23   Thomas Fitoussi   Put radial distri...
26
27
28
   #===============================================================================================#
   #  IMAGE
   #===============================================================================================#
138898c8   Thomas Fitoussi   Computation of ra...
29
30
   #H,xedges,yedges = histogram2d(theta*cos(phi),theta*sin(phi),bining,weights=weight,range=limits)
   #conv=convolve2d(H,source[0],boundary="wrap",mode="same")
0b56ded5   Thomas Fitoussi   take into account...
31
32
   H,xedges,yedges,im = ax.hist2d(theta*cos(phi),theta*sin(phi),bining,weights=weight,
         norm=LogNorm(),range=limits)
49a0fe94   Thomas Fitoussi   Add direct printi...
33
34
35
36
37
38
39
   cbar=fig.colorbar(im, ax=ax)
   cbar.ax.set_ylabel("counts")
   ax.set_xlim((-borne[0],borne[0]))
   ax.set_ylim((-borne[1],borne[1]))
   ax.set_xlabel("$\\theta$ $\\cos(\\phi)$ [deg]")
   ax.set_ylabel("$\\theta$ $\\sin(\\phi)$ [deg]")
   ax.grid(b=True,which='major')
f5a75019   Thomas Fitoussi   Rewrite Analysis....
40
   ax.set_title(saveId+" - isotrop")
30f3bf5d   Thomas Fitoussi   Adapt reading of ...
41
   savefig(saveId+"/map_isotrop.png")
28843f23   Thomas Fitoussi   Put radial distri...
42

138898c8   Thomas Fitoussi   Computation of ra...
43
44
45
46
47
48
49
50
#def isotrop():
#   return array([[1]]), "isotropic"
#
#def Gaussian2D(center=[0,0],fwhm=0.01):
#   x = arange(-thetalim,thetalim+step,step)
#   y = arange(-philim,philim+step,step)
#   y = y[:,newaxis]
#   return exp(-4*log(2) * ((x-center[0])**2 + (y+center[1])**2) / fwhm**2), "jet_"+str(fwhm)