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