Import Geant4 11.0.0 source tree
This commit is contained in:
Executable
+143
@@ -0,0 +1,143 @@
|
||||
#!/usr/bin/python
|
||||
# ==================================================================
|
||||
# python script for Geant4Py test
|
||||
#
|
||||
# gtest01
|
||||
# - check basic control flow
|
||||
# ==================================================================
|
||||
from Geant4 import *
|
||||
import gtest01
|
||||
import ROOT
|
||||
|
||||
# ==================================================================
|
||||
# ROOT PART #
|
||||
# ==================================================================
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
def init_root():
|
||||
# ------------------------------------------------------------------
|
||||
ROOT.gROOT.Reset()
|
||||
|
||||
# plot style
|
||||
ROOT.gStyle.SetTextFont(82)
|
||||
ROOT.gStyle.SetTitleFont(82, "X")
|
||||
ROOT.gStyle.SetLabelFont(82, "X")
|
||||
ROOT.gStyle.SetTitleFont(82, "Y")
|
||||
ROOT.gStyle.SetLabelFont(82, "Y")
|
||||
|
||||
#ROOT.gStyle.SetOptTitle(0)
|
||||
ROOT.gStyle.SetErrorX(0)
|
||||
|
||||
canvas= ROOT.TCanvas("g4py_plots",
|
||||
"Geant4Py Sample Plots",
|
||||
620, 30, 600, 400)
|
||||
|
||||
#canvas.Divide(2,2);
|
||||
#canvas.SetFillColor(29)
|
||||
|
||||
canvas.SetGrid()
|
||||
|
||||
return canvas
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
def hini():
|
||||
# ------------------------------------------------------------------
|
||||
global hist1
|
||||
hist1= ROOT.TH1D("dE/dx/step", "dE/dx", 100, 0., 2000.)
|
||||
hist1.SetXTitle("(keV)")
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
def hshow():
|
||||
# ------------------------------------------------------------------
|
||||
hist1.Draw()
|
||||
|
||||
# ==================================================================
|
||||
# Geant4 PART #
|
||||
# ==================================================================
|
||||
|
||||
# ==================================================================
|
||||
# user actions in python
|
||||
# ==================================================================
|
||||
class MyPrimaryGeneratorAction(G4VUserPrimaryGeneratorAction):
|
||||
"My Primary Generator Action"
|
||||
|
||||
def __init__(self):
|
||||
G4VUserPrimaryGeneratorAction.__init__(self)
|
||||
self.particleGun= G4ParticleGun(1)
|
||||
|
||||
def GeneratePrimaries(self, event):
|
||||
self.particleGun.GeneratePrimaryVertex(event)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
class MyRunAction(G4UserRunAction):
|
||||
"My Run Action"
|
||||
|
||||
def BeginOfRunAction(self, run):
|
||||
print "*** #event to be processed (BRA)=",
|
||||
run.numberOfEventToBeProcessed
|
||||
|
||||
def EndOfRunAction(self, run):
|
||||
print "*** run end run(ERA)=", run.runID
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
class MyEventAction(G4UserEventAction):
|
||||
"My Event Action"
|
||||
|
||||
def BeginOfEventAction(self, event):
|
||||
print "*** current event (BEA)=", event.eventID
|
||||
|
||||
def EndOfEventAction(self, event):
|
||||
print "*** current event (EEA)=", event.eventID
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
class MySteppingAction(G4UserSteppingAction):
|
||||
"My Stepping Action"
|
||||
|
||||
def UserSteppingAction(self, step):
|
||||
#print "*** dE/dx in current step=", step.GetTotalEnergyDeposit()
|
||||
dedx= step.GetTotalEnergyDeposit()
|
||||
if(dedx>0):
|
||||
hist1.Fill(dedx/HEPUnit.keV)
|
||||
|
||||
# ==================================================================
|
||||
# main
|
||||
# ==================================================================
|
||||
g4pyCanvas= init_root()
|
||||
hini()
|
||||
|
||||
app= gtest01.MyApplication()
|
||||
app.Configure()
|
||||
|
||||
# set user actions...
|
||||
myPGA= MyPrimaryGeneratorAction()
|
||||
gRunManager.SetUserAction(myPGA)
|
||||
|
||||
myRA= MyRunAction()
|
||||
gRunManager.SetUserAction(myRA)
|
||||
|
||||
#myEA= MyEventAction()
|
||||
#gRunManager.SetUserAction(myEA)
|
||||
|
||||
mySA= MySteppingAction()
|
||||
gRunManager.SetUserAction(mySA)
|
||||
|
||||
|
||||
# set particle gun
|
||||
#ApplyUICommand("/control/execute gun.mac")
|
||||
pg= myPGA.particleGun
|
||||
pg.SetParticleByName("e-")
|
||||
pg.SetParticleEnergy(200.*HEPUnit.MeV)
|
||||
pg.SetParticleMomentumDirection(G4ThreeVector(0.2, 0., 1.))
|
||||
pg.SetParticlePosition(G4ThreeVector(0.,0.,-14.9)*HEPUnit.cm)
|
||||
|
||||
# visualization
|
||||
ApplyUICommand("/control/execute vis.mac")
|
||||
|
||||
# beamOn
|
||||
gRunManager.BeamOn(1000)
|
||||
|
||||
#
|
||||
hshow()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user