[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 | |
---|