Geant4-11
__init__.py
Go to the documentation of this file.
1"""
2# ==================================================================
3# [Geant4] module package
4#
5# Welcome to Geant4Py.
6#
7# This package contains a set of Python interface with Geant4.
8# ==================================================================
9"""
10__version__ ='10.6'
11__date__ = 'December/2019'
12__author__ = 'K.Murakami (Koichi.Murakami@kek.jp)'
13
14# import submodules
15from .G4interfaces import *
16from .G4intercoms import *
17from .G4global import *
18from .G4run import *
19from .G4event import *
20from .G4tracking import *
21from .G4track import *
22from .G4particles import *
23from .G4processes import *
24from .G4geometry import *
25from .G4materials import *
26from .G4physicslists import *
27from .G4digits_hits import *
28from .G4visualization import *
29from .G4graphics_reps import *
30from .hepunit import *
31from .colortable import *
32
33def print_version():
34 print("""=============================================================
35 Welcome to Geant4Py (A Geant4-Python Bridge)
36
37 Version : %s
38 Date : %s
39=============================================================
40""" % ( __version__, __date__) )
41
42# ==================================================================
43# initialize
44# ==================================================================
45# set G4cout/G4cerr to Python stdout
46SetG4PyCoutDestination()
47
48# ==================================================================
49# globals, which start with "g"
50# ==================================================================
51# gRunManager
52if G4RunManager.GetRunManager() == None:
53 gRunManager = G4RunManager()
54else:
55 gRunManager = G4RunManager.GetRunManager()
57
58# gUImanager
60
61# gEventManager
63
64# gStackManager
65gStackManager = gEventManager.GetStackManager()
66
67# gTrackingManager
68gTrackingManager = gEventManager.GetTrackingManager()
69
70# gStateManager
72gExceptionHandler = G4ExceptionHandler() # automatically registered
73
74# gGeometryManager
76
77# gTransportationManager
79
80# gParticleTable
82gParticleIterator = PyG4ParticleList()
83
84# gProcessTable
86
87# gProductionCutsTable
89
90# gEmCalculator
91gEmCalculator = G4EmCalculator()
92
93# gMaterial/ElementTable
96
97# gNistManager (since 7.1)
98_material_class_list = dir(G4materials)
99_qfind = _material_class_list.count("G4NistManager") > 0
100if _qfind:
101 gNistManager = G4NistManager.Instance()
102
103# gVisManager
104_visdriver_list = dir(G4visualization)
105_q_opengl_ix = "G4OpenGLImmediateX" in _visdriver_list
106_q_opengl_sx = "G4OpenGLStoredX" in _visdriver_list
107_q_opengl_ixm = "G4OpenGLImmediateXm" in _visdriver_list
108_q_opengl_sxm = "G4OpenGLStoredXm" in _visdriver_list
109_q_raytracer_x = "G4RayTracerX" in _visdriver_list
110
112 gVisManager = G4VisManager()
113 if _q_opengl_ix:
114 _opengl_ix = G4OpenGLImmediateX()
115 if _q_opengl_sx:
116 _opengl_sx = G4OpenGLStoredX()
117 if _q_opengl_ixm:
118 _opengl_ixm = G4OpenGLImmediateXm()
119 if _q_opengl_sxm:
120 _opengl_sxm = G4OpenGLStoredXm()
121 if _q_raytracer_x:
122 _raytracer_x = G4RayTracerX()
123
124 _vrml2 = G4VRML2File()
125 _dawn = G4DAWNFILE()
126 _heprep_file = G4HepRepFile()
127 _atree = G4ASCIITree()
128 _raytracer = G4RayTracer()
129
130 if _q_opengl_ix:
131 gVisManager.RegisterGraphicsSystem(_opengl_ix)
132 if _q_opengl_sx:
133 gVisManager.RegisterGraphicsSystem(_opengl_sx)
134 if _q_opengl_ixm:
135 gVisManager.RegisterGraphicsSystem(_opengl_ixm)
136 if _q_opengl_sxm:
137 gVisManager.RegisterGraphicsSystem(_opengl_sxm)
138 if _q_raytracer_x:
139 gVisManager.RegisterGraphicsSystem(_raytracer_x)
140
141 gVisManager.RegisterGraphicsSystem(_vrml2)
142 gVisManager.RegisterGraphicsSystem(_dawn)
143 gVisManager.RegisterGraphicsSystem(_heprep_file)
144 gVisManager.RegisterGraphicsSystem(_atree)
145 gVisManager.RegisterGraphicsSystem(_raytracer)
146
147 gVisManager.Initialize()
148
149# version information
150gG4Version = G4Version
151gG4Date = G4Date
152gG4VERSION_NUMBER = G4VERSION_NUMBER
153
154# ------------------------------------------------------------------
155# functions
156# ------------------------------------------------------------------
157gControlExecute = gUImanager.ExecuteMacroFile
158gApplyUICommand = G4intercoms.ApplyUICommand
159gGetCurrentValues = gUImanager.GetCurrentValues
160gStartUISession = G4interfaces.StartUISession
161
162
163# ==================================================================
164# extentions
165# ==================================================================
166
167# ------------------------------------------------------------------
168# generate one event
169# ------------------------------------------------------------------
170def _one_event(self):
171 "generate one event."
172 self.BeamOn(1)
173
174G4RunManager.OneEvent = _one_event
175
176# ------------------------------------------------------------------
177# list material information
178# ------------------------------------------------------------------
180 "list materials."
181 n_materials = len(gMaterialTable)
182 print(" +------------------------------------------------------------------")
183 print(" | Table of G4Material-s (%d materails defined)" % (n_materials))
184 for i in range(0, n_materials) :
185 material = gMaterialTable[i]
186 print(" |--------------------------------------------------------"\
187 "----------")
188 print(" | %s: %s" % (material.GetName(),
189 G4BestUnit(material.GetDensity(),"Volumic Mass")))
190
191 elementVec = material.GetElementVector()
192 fractionVec = material.GetFractionVector()
193 abundanceVec = material.GetVecNbOfAtomsPerVolume()
194 totNAtoms = material.GetTotNbOfAtomsPerVolume()
195
196 n_elements = len(elementVec)
197 for j in range(0, n_elements):
198 print(" | + (%1d) %s(%s): A=%4.1f, N=%5.1f, " \
199 "Frac.=(%4.1f%%m,%4.1f%%a)" % \
200 (j+1, elementVec[j].GetName(), elementVec[j].GetSymbol(),
201 elementVec[j].GetZ(),
202 elementVec[j].GetN(),
203 fractionVec[j]/hepunit.perCent,
204 abundanceVec[j]/totNAtoms/hepunit.perCent))
205
206 print(" +------------------------------------------------------------------")
207
208G4MaterialTable.ListMaterial = _list_material
209
210
211# ------------------------------------------------------------------
212# termination
213# ------------------------------------------------------------------
215 gGeometryManager.OpenGeometry()
216
217
218# ------------------------------------------------------------------
219# signal handler
220# ------------------------------------------------------------------
221import signal
222import threading
223
224def _run_abort(signum, frame):
225 state = gStateManager.GetCurrentState()
226
227 if(state == G4ApplicationState.G4State_GeomClosed or
228 state == G4ApplicationState.G4State_EventProc):
229 print("aborting Run ...")
230 gRunManager.AbortRun(True)
231 else:
232 raise KeyboardInterrupt
233
234if (threading.activeCount() == 1):
235 signal.signal(signal.SIGINT, _run_abort)
void print(G4double elem)
static G4ElementTable * GetElementTable()
Definition: G4Element.cc:397
static G4EventManager * GetEventManager()
static G4GeometryManager * GetInstance()
static G4MaterialTable * GetMaterialTable()
Definition: G4Material.cc:672
static G4NistManager * Instance()
static G4ParticleTable * GetParticleTable()
static G4ProcessTable * GetProcessTable()
static G4ProductionCutsTable * GetProductionCutsTable()
static G4RunManagerKernel * GetRunManagerKernel()
static G4RunManager * GetRunManager()
static G4StateManager * GetStateManager()
static G4TransportationManager * GetTransportationManager()
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:77
static G4VVisManager * GetConcreteInstance()
def _list_material(self)
Definition: __init__.py:179
def _one_event(self)
Definition: __init__.py:170
def _run_abort(signum, frame)
Definition: __init__.py:224
def gTerminate()
Definition: __init__.py:214