11 import g4py.emcalculator
    15 from cStringIO 
import StringIO
    22   g4py.ExN03pl.Construct()
    31   gRunManager.Initialize()
    32   gRunManagerKernel.RunInitialization()
    36   for n 
in range(-3, 3):
    37     for i 
in range(10,99):
    38       elist.append(i/10.*10.**n *MeV)
    43   sys.stdout = mycout = StringIO()
    44   dedx_list= g4py.emcalculator.CalculateDEDX(pname, material, elist, 1)
    50     xlist_tot.append((x[0], x[1][
"tot"]/(MeV*cm2/g)))
    51     xlist_ioni.append((x[0], x[1][
"ioni"]/(MeV*cm2/g)))
    52     xlist_brems.append((x[0], x[1][
"brems"]/(MeV*cm2/g)))
    55   global myCanvas, aplot, bplot, cplot
    58                            "dE/dX (MeV cm^{2}/g)")
    60                            "dE/dX (MeV cm^{2}/g)", 1)
    62                            "dE/dX (MeV cm^{2}/g)", 3)
    63   myCanvas.SaveAs(
"/tmp/sp.png")
    73   gRunManager.Initialize()
    74   gRunManagerKernel.RunInitialization()
    78   for n 
in range(-3, 4):
    79     for i 
in range(10,99):
    80       elist.append(i/10.*10.**n *MeV)
    85   sys.stdout = mycout = StringIO()
    86   xsection_list= g4py.emcalculator.CalculatePhotonCrossSection(material,
    92   for x 
in xsection_list:
    93     xlist_tot.append((x[0]/MeV, x[1][
"tot"]/(cm2/g)))
    94     xlist_comp.append((x[0]/MeV, x[1][
"compt"]/(cm2/g)))
    95     xlist_pe.append((x[0]/MeV, x[1][
"phot"]/(cm2/g)))
    96     xlist_conv.append((x[0]/MeV, x[1][
"conv"]/(cm2/g)))
    99   global myCanvas, aplot, bplot, cplot, dplot
   102                              "Cross Section (cm^{2}/g)")
   104                              "Cross Section (cm^{2}/g)", 1)
   106                              "Cross Section (cm^{2}/g)", 7)
   108                              "Cross Section (cm^{2}/g)", 3)
   109   myCanvas.SaveAs(
"/tmp/cs.png")
   129     self.
mainwindow.set_position(gtk.WIN_POS_MOUSE)
   131     self.
mainwindow.connect(
'delete-event', 
lambda w,d: gtk.main_quit())
   132     self.
mainwindow.connect(
'destroy-event',
lambda w,d: gtk.main_quit())
   138     particle_frame.set_border_width(self.
__margin)
   141     material_frame.set_border_width(self.
__margin)
   143     separator = gtk.HSeparator()
   146     action_box.set_border_width(self.
__margin)
   150     vbox.pack_start(header)
   151     vbox.pack_start(particle_frame)
   152     vbox.pack_start(material_frame)
   153     vbox.pack_start(separator)
   154     vbox.pack_start(action_box)
   164       buttons=gtk.BUTTONS_CLOSE, type=gtk.MESSAGE_ERROR,
   165       message_format=
"Material is not defined in G4Nist materials")
   172     label.set_markup(
"<big><b>EM Calculator</b></big>")
   173     hbox.pack_start(label)
   179  - stopping power for e/mu/proton   180  - cross sections for gamma   182     label.set_markup(text)
   183     hbox.pack_start(label)
   188     frame = gtk.Frame(
"Particle")
   192     hbox.set_border_width(self.
__margin)
   194     button = gtk.RadioButton(
None, 
"electron")
   196     hbox.pack_start(button, 
True, 
True, 0)
   200     button = gtk.RadioButton(button, 
"positron")
   202     hbox.pack_start(button, 
True, 
True, 0)
   205     button = gtk.RadioButton(button, 
"mu-")
   207     hbox.pack_start(button, 
True, 
True, 0)
   210     button = gtk.RadioButton(button, 
"mu+")
   212     hbox.pack_start(button, 
True, 
True, 0)
   215     button = gtk.RadioButton(button, 
"proton")
   217     hbox.pack_start(button, 
True, 
True, 0)
   220     button = gtk.RadioButton(button, 
"gamma")
   222     hbox.pack_start(button, 
True, 
True, 0)
   228     frame = gtk.Frame(
"Material (G4Nist)")
   232     hbox.set_border_width(self.
__margin)
   235                            "G4_Ge", 
"G4_Ag", 
"G4_W", 
"G4_Au", 
"G4_Pb",
   236                            "G4_AIR", 
"G4_Galactic", 
"G4_WATER", 
"G4_CESIUM_IODIDE",
   237                            "G4_SODIUM_IODIDE", 
"G4_PLASTIC_SC_VINYLTOLUENE",
   251     box = gtk.HButtonBox()
   252     box.set_layout(gtk.BUTTONBOX_END)
   255     exec_button = gtk.Button(stock = gtk.STOCK_EXECUTE)
   256     text_button = gtk.Button(
"Text View")
   257     quit_button = gtk.Button(stock = gtk.STOCK_QUIT)
   264     quit_button.connect(
"clicked", 
lambda w: gtk.main_quit())
   277     entry = widget.get_child()
   281     g4mate = gNistManager.FindOrBuildMaterial(self.
material)
   282     if (g4mate == 
None) :
   293     self.
textview.textbuffer.set_text(mycout.getvalue())
   313     sw = gtk.ScrolledWindow()
   314     sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
   318     textview = gtk.TextView()
   322     hbox = gtk.HButtonBox()
   323     hbox.set_layout(gtk.BUTTONBOX_END)
   324     hbox.set_border_width(self.
__margin)
   325     vbox.pack_start(hbox, expand=
False)
   327     close_button = gtk.Button(stock = gtk.STOCK_CLOSE)
   329     hbox.add(close_button)
   345   default_stdout = sys.stdout
   347   sys.stdout = mycout = StringIO()
   357   sys.stdout = default_stdout
   360 if __name__ == 
"__main__":
   363   except KeyboardInterrupt :
 def plot_charged(material, pname)
 
def cb_hide_window(self, widget, data=None)
 
def cb_select_material(self, widget, data=None)
 
def create_particle_frame(self)
 
def cb_close_dialog(self, widget, data=None)
 
def create_material_frame(self)
 
def cb_show_plot(self, widget, data=None)
 
def cb_show_textview(self, widget, data=None)
 
def create_action_box(self)
 
def make_plot(xlist, user_title, axis_titile, q_super_impose=0)
 
def SetMaterial(material_name)
 
void SetG4PyCoutDestination()
 
def cb_select_particle(self, widget, data=None)