| [1337] | 1 | #!/usr/bin/python
|
|---|
| 2 | # ==================================================================
|
|---|
| 3 | # An example of ploting by EmCalculator
|
|---|
| 4 | #
|
|---|
| 5 | # Plotting photon cross sections and stopping power
|
|---|
| 6 | # ==================================================================
|
|---|
| 7 | from Geant4 import *
|
|---|
| 8 | import g4py.ExN03pl
|
|---|
| 9 | import g4py.emcalculator
|
|---|
| 10 | import EmPlot
|
|---|
| 11 |
|
|---|
| 12 | # initialize
|
|---|
| 13 | EmPlot.Configure()
|
|---|
| 14 |
|
|---|
| 15 | # user physics list
|
|---|
| 16 | g4py.ExN03pl.Construct()
|
|---|
| 17 |
|
|---|
| 18 | # target material
|
|---|
| 19 | material= "G4_Pb"
|
|---|
| 20 | EmPlot.SetMaterial(material)
|
|---|
| 21 |
|
|---|
| 22 | # initialize G4 kernel
|
|---|
| 23 | gRunManager.Initialize()
|
|---|
| 24 | gRunManagerKernel.RunInitialization()
|
|---|
| 25 |
|
|---|
| 26 | # energy
|
|---|
| 27 | elist= []
|
|---|
| 28 | for n in range(-3, 4):
|
|---|
| 29 | for i in range(10,99):
|
|---|
| 30 | elist.append(i/10.*10.**n *MeV)
|
|---|
| 31 |
|
|---|
| 32 |
|
|---|
| 33 | # calculate cross sections
|
|---|
| 34 | xsection_list= g4py.emcalculator.CalculatePhotonCrossSection(material, elist, 1)
|
|---|
| 35 | xlist_tot=[]
|
|---|
| 36 | xlist_comp=[]
|
|---|
| 37 | xlist_pe=[]
|
|---|
| 38 | xlist_conv=[]
|
|---|
| 39 | for x in xsection_list:
|
|---|
| 40 | xlist_tot.append((x[0]/MeV, x[1]["tot"]/(cm2/g)))
|
|---|
| 41 | xlist_comp.append((x[0]/MeV, x[1]["compt"]/(cm2/g)))
|
|---|
| 42 | xlist_pe.append((x[0]/MeV, x[1]["phot"]/(cm2/g)))
|
|---|
| 43 | xlist_conv.append((x[0]/MeV, x[1]["conv"]/(cm2/g)))
|
|---|
| 44 |
|
|---|
| 45 | # make a plot
|
|---|
| 46 | myCanvas= EmPlot.init_root()
|
|---|
| 47 | aplot= EmPlot.make_plot(xlist_tot, "Photon Cross Section ("+material+")",
|
|---|
| 48 | "Cross Section (cm^{2}/g)")
|
|---|
| 49 | bplot= EmPlot.make_plot(xlist_comp, "Photon Cross Section ("+material+")",
|
|---|
| 50 | "Cross Section (cm^{2}/g)", 1)
|
|---|
| 51 | cplot= EmPlot.make_plot(xlist_pe, "Photon Cross Section ("+material+")",
|
|---|
| 52 | "Cross Section (cm^{2}/g)", 7)
|
|---|
| 53 | dplot= EmPlot.make_plot(xlist_conv, "Photon Cross Section ("+material+")",
|
|---|
| 54 | "Cross Section (cm^{2}/g)", 3)
|
|---|
| 55 |
|
|---|