Geant4-11
EmPlot.py
Go to the documentation of this file.
1#!/usr/bin/python
2# ==================================================================
3# An example of ploting by EmCalculator
4#
5# Plotting photon cross sections and stopping power with ROOT
6# ==================================================================
7from Geant4 import *
8import g4py.NISTmaterials
9import g4py.ezgeom
10
11# ==================================================================
12# geometry setup
13# ==================================================================
14
15# ------------------------------------------------------------------
16# setup
17# ------------------------------------------------------------------
19 g4py.NISTmaterials.Construct()
20 g4py.ezgeom.Construct()
21
22# ------------------------------------------------------------------
23# constructing geometry
24# ------------------------------------------------------------------
25def SetMaterial(material_name):
26 material= gNistManager.FindOrBuildMaterial(material_name)
27 g4py.ezgeom.SetWorldMaterial(material)
28
29
30# ==================================================================
31# plot by ROOT
32# ==================================================================
33import ROOT
34from math import log, log10, sqrt, ceil, floor
35from array import array
36
37# ------------------------------------------------------------------
38# caclculate plot range
39# ------------------------------------------------------------------
40def plot_range(xmin, xmax, xmargin=0.):
41 xmaxlog= 10
42 xminlog= -10
43
44 if(xmax!=0.):
45 xmaxlog= log10(xmax)
46
47 if(xmin!=0):
48 xminlog= log10(xmin)
49
50 ixmaxlog= xmaxlog+0.5
51 ixminlog= xminlog-0.5-xmargin
52
53 return [10**ixminlog, 10**ixmaxlog]
54
55# ------------------------------------------------------------------
56# ROOT init
57# ------------------------------------------------------------------
59 ROOT.gROOT.Reset()
60
61 # plot style
62 ROOT.gStyle.SetTextFont(82)
63
64 ROOT.gStyle.SetTitleFont(82, "X")
65 ROOT.gStyle.SetTitleFontSize(0.04)
66 ROOT.gStyle.SetLabelFont(82, "X")
67 ROOT.gStyle.SetTitleFont(82, "Y")
68 ROOT.gStyle.SetLabelFont(82, "Y")
69
70 #ROOT.gStyle.SetOptTitle(0)
71 ROOT.gStyle.SetErrorX(0)
72
73 canvas= ROOT.TCanvas("g4plot", "g4plot", 620, 30, 600, 600)
74
75 canvas.SetLogy()
76 canvas.SetLogx()
77 canvas.SetGrid()
78
79 return canvas
80
81# ------------------------------------------------------------------
82# do a plot
83# ------------------------------------------------------------------
84def make_plot(xlist, user_title, axis_titile, q_super_impose=0):
85
86 ekin_array, y_array = array('d'), array('d')
87
88 for x in xlist:
89 ekin_array.append(x[0])
90 y_array.append(x[1])
91
92 # plot range
93 xmin= min(ekin_array)
94 xmax= max(ekin_array)
95 xrange= plot_range(xmin, xmax)
96
97 ymin= min(y_array)
98 ymax= max(y_array)
99 yrange= plot_range(ymin, ymax, 2)
100
101 if(q_super_impose==0):
102 htit= user_title
103 global frame
104 frame= ROOT.TH1F("dumy", htit, 1, xrange[0], xrange[1]);
105 frame.SetMinimum(yrange[0]);
106 frame.SetMaximum(yrange[1]);
107 frame.SetXTitle("Kinetic Energy (MeV)")
108 frame.GetXaxis().SetLabelSize(0.025)
109 frame.GetXaxis().SetTitleSize(0.03)
110 frame.SetYTitle(axis_titile)
111 frame.GetYaxis().SetLabelSize(0.025)
112 frame.GetYaxis().SetTitleSize(0.03)
113 frame.SetStats(0)
114 frame.Draw()
115
116 plot= ROOT.TGraph(len(ekin_array), ekin_array, y_array)
117 plot.Draw("L")
118 plot.SetLineColor(q_super_impose+1)
119
120 return plot
121
def Configure()
Definition: EmPlot.py:18
def init_root()
Definition: EmPlot.py:58
def make_plot(xlist, user_title, axis_titile, q_super_impose=0)
Definition: EmPlot.py:84
def plot_range(xmin, xmax, xmargin=0.)
Definition: EmPlot.py:40
def SetMaterial(material_name)
Definition: EmPlot.py:25
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments