Commit a05caa75b3b2b07876b526f4900969820dcc6365

Authored by Thomas Fitoussi
1 parent ab1642d3
Exists in master

Add 2d-histogram to arrival direction

- count vs theta and phi
Showing 3 changed files with 46 additions and 48 deletions   Show diff stats
Arrival_direction.py
... ... @@ -3,6 +3,7 @@
3 3 from sys import argv
4 4 import numpy as np
5 5 import matplotlib.pyplot as plt
  6 +from matplotlib.colors import LogNorm
6 7 from mpl_toolkits.mplot3d.axes3d import Axes3D
7 8  
8 9 if len(argv)<2:
... ... @@ -11,77 +12,73 @@ if len(argv)&lt;2:
11 12  
12 13 # figure: position of the arriving particles in space -> size circle = energy
13 14 #=============================================================================
14   -nbBins = 50
  15 +nbBins = 100
15 16 degre= 180/np.pi
16 17 borne=5 # degree
17   -Elim=1e-6 # GeV
  18 +Elim=1e-1 # GeV
18 19  
19   -fig = plt.figure()
  20 +fig1 = plt.figure()
  21 +fig2 = plt.figure()
20 22  
21 23 nbplots = len(argv)-1
22 24 ind = 1
23 25 for fileId in argv[1:]:
24 26 energy,thetaDir,phiDir = np.loadtxt("Results_EGMF"+fileId+"/Results_momentum",unpack=True,usecols=[0,4,5])
25 27 thetaPos,phiPos = np.loadtxt("Results_EGMF"+fileId+"/Results_position",unpack=True,usecols=[4,5])
  28 + charge,weight=np.loadtxt("Results_EGMF"+fileId+"/Results_extra",unpack=True,usecols=[0,2])
26 29  
27   - plotid = 100+nbplots*10+ind
28   - ax = fig.add_subplot(plotid)
29   -
30   - Energy = energy[energy>Elim]
31   - print "Cut at", Elim, "GeV:", np.shape(Energy)
32   - thetaPos = thetaPos[energy>Elim]*degre
33   - phiPos = phiPos[energy>Elim]*degre
34   - thetaDir = thetaDir[energy>Elim]*degre
35   - phiDir = phiDir[energy>Elim]*degre
  30 + thetaPos = thetaPos*degre
  31 + phiPos = phiPos*degre
  32 + thetaDir = thetaDir*degre
  33 + phiDir = phiDir*degre
36 34 theta = thetaDir - thetaPos
37 35 phi = phiDir -phiPos
38 36  
39   - ## random position of the detector
40   - #a=np.random.rand(2,1)
41   - #w=a[0,0]*2.-1.
42   - #u=np.sqrt(1-w*w)*np.cos(2*np.pi*a[1,0])
43   - #v=np.sqrt(1.-w*w)*np.sin(2.*np.pi*a[1,0])
44   - ## 2D -> use only u and v
45   - #theta_detector = u*180 #degre
46   - #phi_detector = v*90 #degre
  37 + cond=(energy>Elim) & (abs(theta)<borne) & (abs(phi)<borne)
  38 + Energy = energy[cond]
  39 + weight=weight[cond]
  40 + theta=theta[cond]
  41 + phi=phi[cond]
47 42  
48   - #FOV = 0.1 #degre
49   -
50   - #energy = energy[energy>Elim
51   - # and np.absolute(theta-theta_detector)<FOV
52   - # and np.absolute(phi-phi_detector)<FOV]
53   - #print "Cut at", Elim, "GeV:", np.shape(Energy)
54   - #theta = theta_detector - theta[energy>Elim
55   - # and np.absolute(theta-theta_detector)<FOV
56   - # and np.absolute(phi-phi_detector)<FOV]
57   - #phi = phi_detector - phi[energy>Elim
58   - # and np.absolute(theta-theta_detector)<FOV
59   - # and np.absolute(phi-phi_detector)<FOV]
60   - #Energy=np.append((Energy,energy),axis=1)
61   - #Theta=np.append((Theta,theta),axis=1)
62   - #Phi=np.append((Phi,phi),axis=1)
  43 + print "Cut at", Elim, "GeV:", np.shape(Energy)
63 44  
64 45 Emax = max(Energy)
65 46 Emin = min(Energy)
66 47 area = np.pi * (15 * Energy/Emax)**2 +15
67 48 colors = Energy/Emax
68   - sax = ax.scatter(theta, phi, s=area, c=colors, alpha=0.3, marker='o')
  49 +
  50 + plotid = 100+nbplots*10+ind
  51 + #ax = fig1.add_subplot(plotid)
  52 + #sax = ax.scatter(theta, phi, s=area, c=colors, alpha=0.3, marker='o')
  53 + #ax.set_xlim((-borne,borne))
  54 + #ax.set_ylim((-borne,borne))
  55 + #ax.set_xlabel("$\\theta$ in degree")
  56 + #ax.set_ylabel("$\\phi$ in degree")
  57 + #ax.set_title("EGMF: $10^{-%.0f"%float(fileId)+"}$Gauss")
  58 +
  59 + #if Emin < 1e-3:
  60 + # liminf = "%.0f"%(Emin*1e6)+"keV"
  61 + #elif Emin < 1:
  62 + # liminf = "%.0f"%(Emin*1e3)+"MeV"
  63 + #else:
  64 + # liminf = "%.0f"%(Emin)+"GeV"
  65 + #limsup = "%.0f"%(Emax*1e-3)+"TeV"
  66 + #cbar = fig1.colorbar(sax, ticks=[0.01,1])
  67 + #cbar.ax.set_yticklabels([liminf,limsup])
  68 +
  69 + ###########################################
  70 +
  71 + ax = fig2.add_subplot(plotid)
  72 + H,xedges,yedges,im = ax.hist2d(theta,phi,nbBins,weights=weight,norm=LogNorm())
  73 + extent = [yedges[0], yedges[-1], xedges[0], xedges[-1]]
  74 + cbar=fig2.colorbar(im, ax=ax)
  75 + cbar.ax.set_ylabel("counts")
69 76 ax.set_xlim((-borne,borne))
70 77 ax.set_ylim((-borne,borne))
71 78 ax.set_xlabel("$\\theta$ in degree")
72 79 ax.set_ylabel("$\\phi$ in degree")
73 80 ax.set_title("EGMF: $10^{-%.0f"%float(fileId)+"}$Gauss")
74   -
75   - if Emin < 1e-3:
76   - liminf = "%.0f"%(Emin*1e6)+"keV"
77   - elif Emin < 1:
78   - liminf = "%.0f"%(Emin*1e3)+"MeV"
79   - else:
80   - liminf = "%.0f"%(Emin)+"GeV"
81   - limsup = "%.0f"%(Emax*1e-3)+"TeV"
82   - cbar = fig.colorbar(sax, ticks=[0.01,1])
83   - cbar.ax.set_yticklabels([liminf,limsup])
84   -
  81 +
85 82 ind=ind+1
86 83  
87 84 plt.show()
... ...
Constantes.py
... ... @@ -15,7 +15,7 @@ lambdaC=hb/(m*c)
15 15 Mpc=(3.0856776e+16)*1e8 # Mpc to cm
16 16 erg_to_GeV=1/(1.602176565e-3)
17 17 degre=180/pi
18   -s_to_yr=3600*24*365.25
  18 +yr=3600*24*365.25 # s
19 19  
20 20 # Cosmology
21 21 a0=1.
... ... @@ -51,6 +51,7 @@ lambda_B=0.3 #Mpc
51 51 Dic= 3*(me*1e-6)**2/(4*sigmaT*rhoCMB*1e-9*Ee) /Mpc #Mpc
52 52 lambdaIC=1/(nCMB*sigmaT*Mpc) #Mpc
53 53 Eic= 4*Ecmb*Ee**2/(3*me**2)*1e3 #GeV
  54 +tIC=lambdaIC/(c*yr/Mpc) #yr
54 55  
55 56 # Larmor radius
56 57 RL=(Ee/erg_to_GeV)/(e*B) /Mpc #Mpc
... ...
Constantes.pyc
No preview for this file type