• No results found

Application of Geant4 Python Interface

N/A
N/A
Protected

Academic year: 2021

Share "Application of Geant4 Python Interface"

Copied!
15
0
0

Loading.... (view fulltext now)

Full text

(1)

Application of Geant4 Python Interface

Application of Geant4 Python Interface

Koichi Murakami

KEK / CRC

Let's start with " >>> import Geant4" A Geant4-Python Bridge

(2)

Python

Python

„

Shell Environment

9 front end shell 9 script language

„

Programming Language

9 much easier than C++

9 supporting Object-Oriented programming 9 providing multi-language binding (C-API) 9 dynamic binding

» modularization of software components » many third-party modules (just plug-in) » software component bus

„

Runtime Performance

9 slower than compiled codes, but not so slow.

(3)

Motivation of Geant4

Motivation of Geant4

-

-

Python Bridge

Python Bridge

„

Improving functionalities of current Geant4 UI

9 more powerful scripting environment

» driving Geant4 on a Python front end

» flow control, variables, arithmetic operation

„

flexibility in the configuration of user applications

9 Modularization of user classes with dynamic loading scheme

» DetectorConstruction, PhysicsList, PrimaryGeneratorAction, UserAction-s

» It helps avoid code duplication.

9 quick prototyping and testing

„

Software component bus

9 interconnectivity with many Python external modules,

» analysis tools (ROOT/AIDA), plotting tools (SciPy/matplotlib)

9 middleware for application developers

» GUI applications/web applications » much quicker development cycle

(4)

Geometry-A ParticleGun ExN03Geometry MedicalBeam ParticleBeam PhysicsList-EMstd PhysicsList-A PhysicsList-EmLowE ExN02Geometry Analysis-A Analysis-B Analysis-C User Application Geometry modules PGA modules PL modules Analysis modules import import import import

Modular Approach and Software Component Bus

Modular Approach and Software Component Bus

Python Bus Analysis •ROOT •AIDA GUI •QT •Wx Web App.

(5)

Geant4Py

Geant4Py

„

Geant4Py

is included in the Geant4 distribution since the

8.1 release.

9 please check the directory “environments/g4py/”

9 Linux and MacOSX(10.4+XCode 2.3/4) are currently supported.

„

A G4-Python bridge as

“Natural Pythonization”

of Geant4

9 start with just importing the module;

» >>> import Geant4

9 not specific to particular applications 9 same class names and their methods

9 keeping compatibility with the current UI scheme 9 minimal dependencies of external packages

» only depending on Boost-Python C++ Library, which is a common, well-established and freely available library.

(6)

„ Currently, over 100 classes over different categories are exposed to Python.

9 Classes for Geant4 managers

» G4RunManager, G4EventManager, …

9 UI classes

» G4UImanager, G4UIterminal, G4UIcommand, …

9 Utility classes

» G4String, G4ThreeVector, G4RotationMatrix, ...

9 Classes of base classes of user actions

» G4UserDetetorConstruction, G4UserPhysicsList, » G4UserXXXAction

― PrimaryGenerator, Run, Event, Stepping,...

» can be inherited in Python side

9 Classes having information to be analyzed

» G4Step, G4Track, G4StepPoint, G4ParticleDefinition, ...

9 Classes for construction user inputs

» G4ParticleGun, G4Box, G4PVPlacement, ...

„ NOT all methods are exposed.

9 Only safe methods are exposed.

» Getting internal information are exposed.

» Some setter methods can easily break simulation results.

What is Exposed to Python

(7)

Extensibility

Extensibility

„

Your own classes can be exposed, and create your own

modules in the Boost-Python manner.

„

Once an abstract class is exposed to Python, you can

implement/override its derived class in the Python side.

BOOST_PYTHON_MODULE(mymodule){

class_<MyApplication>("MyApplication", "my application") .def("Configure", &MyApplication::Configure)

;

class MyRunAction(G4UserRunAction): “””My Run Action”””

def BeginOfRunAction(self, run):

print "*** #event to be processed (BRA)=“, \ run.GetNumberOfEventToBeProcessed()

(8)

Compatibility with G4UImanager

Compatibility with G4UImanager

„

Geant4Py provides a bridge to G4UImanager.

9 Keeping compatibility with current usability

„

UI Commands

9 gApplyUICommand(“/xxx/xxx”) allows to execute any G4UI

commands.

9 Current values can be obtained by

gGetCurrentValues(“/xxx/xxx”).

„

Existing G4 macro files can be reused.

9 gControlExecute(“macro_file_name”)

„

Front end shell can be activated from Python

9 gStartUISession() starts G4UIsession. » g4py(Idle): // invoke a G4UI session

» when exit the session, go back to the Python front end „ Python variables/methods starting “g” are global.

(9)

Predefined Modules

Predefined Modules

„

We will also provide site-module package as predefined

components for easy-to-use as well as good examples.

9 Material

» NIST materials via G4NistManager

9 Geometry

» “exN03” geometry as pre-defined geometry

» “EZgeometry”

― provides functionalities for easy geometry setup

9 Physics List

» pre-defined physics lists

» easy access to cross sections, stopping powers, ... via G4EmCalculator

9 Primary Generator Action

» particle gun / particle beam

9 Sensitive Detector

» calorimeter type / tracker type

9 Scorer

» MC particle/vertex

(10)

Yet Another Way to Create Geometry

Yet Another Way to Create Geometry

„

“EZgeom” module provides an easy way to create simple

users geometries;

9 structure of geometry construction is hidden;

» Solid/Logical Volume/World Volume

» “EZvolume” is the only gateway to a physical volume from users side.

9 automatic creation of the world volume

» volume size should be cared.

9 creating CSG-solid volumes (Box, Tube, Sphere, …) 9 changing volume materials

9 creating nested volumes

» placing a volume in the world by default

9 creating replicas / voxelizing BOX volumes 9 setting detector sensitivities

(11)

Example of using

Example of using

EZgeom

EZgeom

package

package

import NISTmaterials

from EZsim import EZgeom

from EZsim.EZgeom import G4EzVolume

NISTmaterials.Construct()

# set DetectorConstruction to the RunManager EZgeom.Construct()

# reset world material

air= gNistManager.FindOrBuildMaterial("G4_AIR") EZgeom.SetWorldMaterial(air) # dummy box detector_box=G4EzVolume("DetectorBox") detector_box.CreateBoxVolume(air, 20.*cm, 20.*cm, 40.*cm) detector_box_pv= detector_box.PlaceIt(G4ThreeVector(0.,0.,20.*cm))

# calorimeter placed inside the box cal= G4EzVolume("Calorimeter")

nai= gNistManager.FindOrBuildMaterial("G4_SODIUM_IODIDE") cal.CreateBoxVolume(nai, 5.*cm, 5.*cm, 30.*cm)

dd= 5.*cm

for ical in range(-1, 2):

calPos= G4ThreeVector(dd*ical, 0., 0.)

0 1 2

(12)

A Medical Application Example

A Medical Application Example

„

Several examples of using Python interface are/will be presented.

„

An example of “water phantom dosimetry”

9 This demo program shows that a Geant4 application well coworks with ROOT on the Python front end.

„

You can look features of;

9

dose calculation in a water phantom

9

Python implementation of sensitive detector

9

Python overloading of user actions

9

on-line histogramming with ROOT

(13)

Pythonization

Pythonization

Level

Level

„

Various level of pythonized application can be

realized.

9

It is completely up to users!

9

Optimized point depends on what you want to do in

Python.

„

There are two metrics;

9

Execution Speed

» wrap out current existing C++ components, and configure them » no performance loss in case of object controller

9

Interactivity

» more scripting in interactive analysis/rapid prototyping

(14)

Applications of

Applications of

Pythonization

Pythonization

Execution Speed

Interactivity/ Pythonization

Productions changing conditions - physics validation/verification

Coworking with other software components - interactive analysis

Fully scripting

- rapid prototyping - educational uses

modularized “compiled” components. - detector construction

- physics list - user actions

, and handling components by scripting

compiled modules and scripting user actions - filling histograms

using “predefined” module and scripting

Performance can be tunable between speed and interactivity.

“radiotherapy simulation for

different configurations of different facilities”

“web application:

Users can execute server applications via web browsers”

“online histogramming with ROOT”

“GUI control panel for educational uses: Various parameters (detector parameters, initial particles, processes, etc) can be changed on GUI”

(15)

Summary

Summary

„

A Python interface of Geant4 (Geant4Py) has been well

designed and Geant4Py is now included in the latest release,

8.1.

9 check the “environments/g4py/” directory

„

Python as a powerful scripting language

9 much better interactivity

» easy and flex configuration » rapid prototyping

„

Python as “Software Component Bus”

9 modularization of Geant4 application

9 natural support for dynamic loading scheme

9 interconnectivity with various kind of software components.

» histogramming with ROOT

„

These applications show the flexibility and usefulness of

References

Related documents

The hypothesis was that teams comprised of members with a higher propensity for working in a collective manner [9] and more prior experience working on interprofessional teams (the

In relation to the predictions of the JDCS model, the iso-strain hypothesis was supported for EE, PA and VI, with DSWs reporting high workload, low control over their workload and

1 shows the overall Architecture of F3TM, which con- sists of five process phases including the IdDS-Key Assignment Algorithm, the TFA for finding trust value can be briefly declared,

Faculty members of the Faculty of Medicine at the University of Toronto are invited to submit medical educational software project proposals to be considered for support. We will

The single-crystal X-ray analysis showed that the complex forms a zig-zag chain structure, in which the chloro ligands bridge the dinuclear units at the axial positions with the

76 Figure 4: Comparison of the product based GHG emissions and GHG reduction potential of different bioenergy production pathways out of biogas produced from energy crops cultivated

Discontent with Gold Coast cocoa price policy stimulated support for Togolese reunification, but the lack of economie Integration between British and French Togo weakened Ewe resolve

Due to missing tests no recommendation to the glove material can be given for the product/ the preparation/ the chemical mixture.. Selection of the glove material on consideration