Import Geant4 9.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:58:43 +02:00
parent 96c8bcd0af
commit b79225fb37
7544 changed files with 245407 additions and 91099 deletions
@@ -26,7 +26,7 @@
//
// $Id: DetectorConstruction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//
@@ -25,7 +25,7 @@
//
//
// $Id: DetectorConstruction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: DetectorMessenger.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: DetectorMessenger.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2007/07/06 06:41:39 kmura Exp $
# $Name: geant4-09-01 $
# $Name: geant4-09-02 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -25,7 +25,7 @@
//
//
// $Id: PhysListEmStandard.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -25,7 +25,7 @@
//
//
// $Id: PhysListEmStandard.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -25,7 +25,7 @@
//
//
// $Id: PhysicsList.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -25,7 +25,7 @@
//
//
// $Id: PhysicsList.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListMessenger.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListMessenger.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -25,7 +25,7 @@
//
//
// $Id: PrimaryGeneratorAction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PrimaryGeneratorAction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: RunAction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: RunAction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyTestEm0.cc,v 1.2 2007/07/06 06:41:59 kmura Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// pyTestEm0.cc
//
@@ -7,7 +7,7 @@
# ==================================================================
from Geant4 import *
import demo_wp
import MedicalBeam
import g4py.MedicalBeam
import ROOT
# ==================================================================
@@ -190,7 +190,7 @@ gRunManager.SetUserAction(myEA)
#pg.SetParticlePosition(G4ThreeVector(0.,0.,-50.)*cm)
# medical beam
beam= MedicalBeam.Construct()
beam= g4py.MedicalBeam.Construct()
beam.particle= "proton"
beam.kineticE= 230.*MeV
#beam.particle= "gamma"
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.1 2006/05/11 04:35:32 kmura Exp $
# $Name: geant4-09-01 $
# $Name: geant4-09-02 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyDetectorConstruction.cc,v 1.3 2006/06/29 15:28:11 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// MyDetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyDetectorConstruction.hh,v 1.3 2006/06/29 15:28:13 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// MyDetectorConstruction.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyMaterials.cc,v 1.3 2006/06/29 15:28:16 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// MyMaterials.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyMaterials.hh,v 1.3 2006/06/29 15:28:19 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// MyMaterials.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyPhysicsList.cc,v 1.3 2006/06/29 15:28:21 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// MyPhysicsList.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyPhysicsList.hh,v 1.3 2006/06/29 15:28:23 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// MyPhysicsList.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: Particles.cc,v 1.3 2006/06/29 15:28:25 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// Particles.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListEMstd.cc,v 1.3 2006/06/29 15:28:29 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// PhysicsListEMstd.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pydemo_wp.cc,v 1.3 2006/06/29 15:28:40 gunter Exp $
// $Name: geant4-09-01 $
// $Name: geant4-09-02 $
// ====================================================================
// pydemo_wp.cc
//
@@ -77,9 +77,9 @@ gRunManager.SetUserAction(mySA)
# set particle gun
pg= myPGA.particleGun
pg.SetParticleByName("proton")
pg.SetParticleEnergy(230.*HEPUnit.MeV)
pg.SetParticleEnergy(230.*MeV)
pg.SetParticleMomentumDirection(G4ThreeVector(0., 0., 1.))
pg.SetParticlePosition(G4ThreeVector(0.,0.,-20.)*HEPUnit.cm)
pg.SetParticlePosition(G4ThreeVector(0.,0.,-20.)*cm)
gRunManager.Initialize()
@@ -1,258 +0,0 @@
\documentclass{article}
\title{How to EZsim using the site-modules of Geant4Py?}
\author{ H. Yoshida \and K. Murakami}
\begin{document}
\maketitle
\section{g4py/site-modules}
Currently site-modules have the following wrapper modules:
\begin{itemize}
\item EZsim
\begin{itemize}
\item EZgeom : main topic of this document
\begin{itemize}
\item ezgeom
\end{itemize}
\end{itemize}
\item geometries : examples of wrapping
\begin{itemize}
\item ExN01geom
\item ExN03geom
\end{itemize}
\item materials : pre-defined materials
\begin{itemize}
\item NISTmaterials
\end{itemize}
\item physics\_lists : examples of wrapping
\begin{itemize}
\item EMSTDpl
\item ExN01pl
\item ExN03pl
\item (GenericPhysicsList)
\end{itemize}
\item primaries : pre-defined particle guns
\begin{itemize}
\item MedicalBeam
\item ParticleGun
\end{itemize}
\end{itemize}
\section{The levels of Python wrapping}
The application of these site modules are stored in
\begin{itemize}
\item tests : many test examples
\item examples/demos/water\_phantom : voxelized water phantom and scoring
\item examples/education
\begin{itemize}
\item lesson1 : measurement of the mass attenuation coefficients
\item lesson2 : exampleN03
\end{itemize}
\end{itemize}
In general, Python wrapping can be applied in various levels.
This can be seen, for example, in the above examples which demonstrate how the
geometries are constructed. We cite two examples how site modules can be used,
and how existing C++ classes can be wrapped to co-work within the framework of
Geant4Py.
\subsection{Full Python case}
The script examples/education/lesson1/Lesson1.py uses the Phtyon modules of
EZgeom. It defines a simple absorber box, using EZgeom module. Its material,
dimensions, colors etc. are modifiable by using Python methods.
\subsection{Wrapping an existing C++ geometry}
The script examples/education/lesson2/ExN03.py uses the geometry of
exampleN03 as it is (ExN03DetectorConstruction).
The modules in site-modules/geometries/ExN03geom wrap these C++ classes and
their methods like exposes its methods like "SetAbsorberMaterial",
"SetAbsorberThickness", "GeometryUpdated" etc..
It also used wrapped "ExN03PhysicsList".
So, ExN03.py script do nothing for the geometry and physics list. It simply
initialized them.
\section{Closer look: Full Python case}
Exposed modules by the EZgeom module are following:
\begin{itemize}
\item Construct() :
\item SetWorldMaterial(material)
\item SetWorldVisibility(bool)
\item ResizeWorld(dx, dy, dz)
\item ResetWorld(dx, dy, dz)
\end{itemize}
Also exposed are modules in the G4EzVolume class.
\begin{itemize}
\item CreateBoxVolume, Tube/Cone/Sphere/Orb
\item Set(Get)Sold
\item Set(Get)Material
\item Set(Get)Color
\item Set(Get)Visibility
\item
\item Placeit()
\item ReplicateIt()
\item VoxelizeIt()
\item
\item SetSensitiveDetector
\end{itemize}
In addition, you can use global names like gMaterialTable etc. which are
defined in the g4py/source and exposed in the widest name space under
Boost-python. You can easily get the list of all g* modules from ipython
shell, once you import Geant4 modules.
Let us explain how to use the above modules, taking the script in
examples/education/lesson1/Leson1.py as an example.
It starts by lines to import modules:
\begin{verbatim}
1: from Geant4 import *
2: import NISTmaterials
3: from EZsim import EZgeom
4: from EZsim.EZgeom import G4EzVolume
5: import EMSTDpl
6: import ParticleGun
7: from time import *
8: import sys
\end{verbatim}
In line 1 you import all exposed modules of Geant4.
From the line 2 to 6, you import relevant site-modules. Lines 7 and 8 is to
import generic Python modules.
Then you define a Python class "Configure" for initialization.
\begin{verbatim}
def Configure():
NISTmaterials.Construct() # NIST materials predefined in g4py
EZgeom.Construct() # initialize
EMSTDpl.Construct() # initialize the physics list
ParticleGun.Construct() # initialize the particle gun
gControlExecute("gun.mac") # this is one of the globals
\end{verbatim}
Now you define the concrete geometry.
\begin{verbatim}
def ConstructGeom():
print "* Constructing geometry..."
# materils
galactic = G4Material.GetMaterial("G4_Galactic", 1)
water = G4Material.GetMaterial("G4_WATER", 1)
# world
EZgeom.SetWorldMaterial(galactic)
EZgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
# water phantom ; logical and physical volumes
global water_phantom, water_phantom_pv
water_phantom= G4EzVolume("WaterPhantom")
water_phantom.CreateBoxVolume(water, 110.*cm, 110.*cm, 10.*cm)
#Place the water phantom in the vacuum!!
water_phantom_pv = water_phantom.PlaceIt(G4ThreeVector(0.,0.,0.*cm))
\end{verbatim}
Here water\_phantom is the logical volume, while water\_phantom\_pv is the
physical volume. These variables are defined as global for later use.
If you want to change the material of the water\_phantom with the lead, for
example, you define lead by makinging its instance from the pre-defined list
and SetMaterial().
\begin{verbatim}
lead = G4Material.GetMaterial("G4_Pb", 1)
water_phantom.SetMaterial(lead)
\end{verbatim}
To print out the name of the materialof the logical volume,
\begin{verbatim}
print water_phantom.Getmaterial().GetName()
\end{verbatim}
If you want to change the dimensions of the water\_phantom, you have to get
its instance of the solid, and then SetZHalfLength().
\begin{verbatim}
solid = EZgeom.G4EzVolume.GetSold(water_phantom)
solid.SetZHalfLength(thickness * mm/2.0)
\end{verbatim}
If you want to relocate the water phantom, i.e., water\_phantom\_pv,
\begin{verbatim}
water_phantom_pv.SetTransformation(G4TreeVector(, ,))
\end{verbatim}
You can use any Geant4 commands with gApplyUICommand() method.
You simply provide it with strings, as seen in the next code fragment.
\begin{verbatim}
eventNum = self.eventVar.get()
for i in range(eventNum):
gunYZpos = str(i-eventNum/2) + ". -20. cm"
gApplyUICommand("/gun/position 0. " + gunYZpos)
gRunManager.BeamOn(1)
sleep(0.01)
\end{verbatim}
With the above code fragment, you use "eventVar" which is supplied by the
"Scale" widget. You repeat gRunManager.BeamOn(1), after a sleep of every
o.o1 second. You use gApplyUICommand() to change the gun's YZ position before
every shoot.
\section{Closer study: wrapped C++ classes case}
The script file in g4py/examples/education/lesson2/ExN03.py is an example.
The C++ classes of geometry and physics list of exampleN03 are exposed with
mo modifications. To expose them, wrapper classes, pyExN03geom.cc and
pyExN03pl.cc are created and stored in ExN03geom/ and ExN03pl/ respectively.
They are pre-compiled and shared libraries; ExN03geom.so, and ExN03pl.so are
stored in the g4py/lib/site-modules library repository.
ExN03geom exposes all the methods defined in ExN03DetectorConstruction.
ExN03.py in lesson2 initializes the geometry and physics list by simply using
the exposed classes;
\begin{verbatim}
from Geant4 import *
import NISTmaterials
import ExN03geom
import ExN03pl
exN03geom = ExN03geom.ExN03DetectorConstruction()
gRunManager.SetUserInitialization(exN03geom)
exN03PL = ExN03pl.ExN03PhysicsList()
gRunManager.SetUserInitialization(exN03PL)
\end{verbatim}
ExN03.py provides the widgets to choose a material with the Checkbutton,
to set the thickness with the Scale widget etc. It provides a "Run" button
to do /run/beamOn equivalent.
Just before "beamOn", the geometry is modified like;
\begin{verbatim}
def cmd_beamOn(self):
exN03geom.SetAbsorberMaterial(self.materialVar.get())
exN03geom.SetAbsorberThickness(self.thickVar.get() * mm/2.0)
exN03geom.UpdateGeometry()
exN03PL.SetDefaultCutValue(self.cutVar.get() * mm)
exN03PL.SetCutsWithDefault()
exN03geom.SetMagField(self.magVar.get() * tesla)
\end{verbatim}
Here, self.xxxVar.get() are the values (String or Double) supplied by the
Checkbutton or Scale widgets.
The on/off of each process is done using the global name gProcessTable.
\begin{verbatim}
def cmd_setProcess(self):
for i in self.processList:
if self.processVar[i].get() == 0:
gProcessTable.SetProcessActivation(i, 0)
print "Process " + i + " inactivated"
else:
gProcessTable.SetProcessActivation(i, 1)
print "Process " + i + " activated"
\end{verbatim}
Here "processList" is a list of the names of processes like below and
"processVar" contains the on/off values of the Checkbuttons for respective
processes.
\begin{verbatim}
self.processList = ["phot", "compt", "conv", "msc", "eIoni", "eBrem", "annih
il","muIoni", "muBrems"]
\end{verbatim}
\end{document}
@@ -6,11 +6,11 @@
# - using site-module packages
# ==================================================================
from Geant4 import *
import NISTmaterials
from EZsim import EZgeom
from EZsim.EZgeom import G4EzVolume
import EMSTDpl
import ParticleGun
import g4py.NISTmaterials
import g4py.ezgeom
from g4py.ezgeom import G4EzVolume
import g4py.EMSTDpl
import g4py.ParticleGun
from time import *
import sys
@@ -22,23 +22,23 @@ def Configure():
# setup for materials
# ------------------------------------------------------------------
# simple materials for Qgeom
NISTmaterials.Construct()
g4py.NISTmaterials.Construct()
# ------------------------------------------------------------------
# setup for geometry
# ------------------------------------------------------------------
#Qgeom.Construct()
EZgeom.Construct() # initialize
#g4py.Qgeom.Construct()
g4py.ezgeom.Construct() # initialize
# ------------------------------------------------------------------
# setup for physics list
# ------------------------------------------------------------------
EMSTDpl.Construct()
g4py.EMSTDpl.Construct()
# ------------------------------------------------------------------
# setup for primary generator action
# ------------------------------------------------------------------
ParticleGun.Construct()
g4py.ParticleGun.Construct()
gControlExecute("gun.mac")
# ==================================================================
@@ -58,8 +58,8 @@ def ConstructGeom():
lead = G4Material.GetMaterial("G4_Pb", 1)
water = G4Material.GetMaterial("G4_WATER", 1)
absorber = {"air":air, "aluminum":aluminum, "iron":iron, "lead":lead, "water":water, "gold":gold}
EZgeom.SetWorldMaterial(galactic)
EZgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
g4py.ezgeom.SetWorldMaterial(galactic)
g4py.ezgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
# water phantom
global water_phantom, water_phantom_pv
@@ -84,7 +84,6 @@ HepRandom.setTheSeed(20050830L)
Configure()
ConstructGeom()
# ------------------------------------------------------------------
# go...
# ------------------------------------------------------------------
@@ -99,7 +98,6 @@ gControlExecute("oglx.mac")
from Tkinter import *
class App(Frame):
def init(self):
@@ -131,7 +129,7 @@ class App(Frame):
thick.grid(row=3, column=1, columnspan=5, sticky=W)
#get logical volume and set its half length
self.solid = EZgeom.G4EzVolume.GetSold(water_phantom)
self.solid = g4py.ezgeom.G4EzVolume.GetSold(water_phantom)
#particle row=4
particleLabel = Label(self, bg="green", text="Particle")
@@ -1,9 +1,11 @@
#!/usr/bin/python
from Geant4 import *
import NISTmaterials
from EZsim import EZgeom
from EZsim.EZgeom import G4EzVolume
import ExN03pl
import ParticleGun
import g4py.NISTmaterials
import g4py.ezgeom
from g4py.ezgeom import G4EzVolume
import g4py.ExN03pl
import g4py.ParticleGun
from time import *
import sys
from subprocess import *
@@ -17,22 +19,22 @@ def Configure():
# setup for materials
# ------------------------------------------------------------------
# simple materials for Qgeom
NISTmaterials.Construct()
g4py.NISTmaterials.Construct()
# ------------------------------------------------------------------
# setup for geometry
# ------------------------------------------------------------------
EZgeom.Construct() # initialize
g4py.ezgeom.Construct() # initialize
# ------------------------------------------------------------------
# setup for physics list of N03
# ------------------------------------------------------------------
ExN03pl.Construct()
g4py.ExN03pl.Construct()
# ------------------------------------------------------------------
# setup for primary generator action
# ------------------------------------------------------------------
ParticleGun.Construct()
g4py.ParticleGun.Construct()
gControlExecute("gun.mac")
# ==================================================================
@@ -54,8 +56,8 @@ def ConstructGeom():
water = G4Material.GetMaterial("G4_WATER", 1)
absorber = {"air":air, "aluminum":aluminum, "iron":iron, "lead":lead, "water":water, "gold":gold
}
EZgeom.SetWorldMaterial(galactic)
EZgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
g4py.ezgeom.SetWorldMaterial(galactic)
g4py.ezgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
# water phantom
global water_phantom, water_phantom_pv
@@ -490,7 +492,7 @@ class MyApp(wx.Frame):
bxsizer.Add(wx.StaticLine(panel), 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5)
bxsizer.Add(self.eventNo.sizer, 0, wx.EXPAND)
self.solid = EZgeom.G4EzVolume.GetSold(water_phantom)
self.solid = g4py.ezgeom.G4EzVolume.GetSold(water_phantom)
panel.SetSizer(bxsizer)
bxsizer.Fit(self)
@@ -6,11 +6,11 @@
# - using site-module packages
# ==================================================================
from Geant4 import *
import NISTmaterials
from EZsim import EZgeom
from EZsim.EZgeom import G4EzVolume
import ExN03pl
import ParticleGun
import g4py.NISTmaterials
import g4py.ezgeom
from g4py.ezgeom import G4EzVolume
import g4py.ExN03pl
import g4py.ParticleGun
from time import *
import sys
@@ -22,23 +22,23 @@ def Configure():
# setup for materials
# ------------------------------------------------------------------
# simple materials for Qgeom
NISTmaterials.Construct()
g4py.NISTmaterials.Construct()
# ------------------------------------------------------------------
# setup for geometry
# ------------------------------------------------------------------
#Qgeom.Construct()
EZgeom.Construct() # initialize
#g4py.Qgeom.Construct()
g4py.ezgeom.Construct() # initialize
# ------------------------------------------------------------------
# setup for physics list
# ------------------------------------------------------------------
ExN03pl.Construct()
g4py.ExN03pl.Construct()
# ------------------------------------------------------------------
# setup for primary generator action
# ------------------------------------------------------------------
ParticleGun.Construct()
g4py.ParticleGun.Construct()
gControlExecute("gun.mac")
# ==================================================================
@@ -58,8 +58,8 @@ def ConstructGeom():
lead = G4Material.GetMaterial("G4_Pb", 1)
water = G4Material.GetMaterial("G4_WATER", 1)
absorber = {"air":air, "aluminum":aluminum, "iron":iron, "lead":lead, "water":water, "gold":gold}
EZgeom.SetWorldMaterial(galactic)
EZgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
g4py.ezgeom.SetWorldMaterial(galactic)
g4py.ezgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
# water phantom
global water_phantom, water_phantom_pv
@@ -131,7 +131,7 @@ class App(Frame):
thick.grid(row=3, column=1, columnspan=5, sticky=W)
#get logical volume and set its half length
self.solid = EZgeom.G4EzVolume.GetSold(water_phantom)
self.solid = g4py.ezgeom.G4EzVolume.GetSold(water_phantom)
#particle row=4
particleLabel = Label(self, bg="green", text="Particle")
@@ -6,10 +6,10 @@
# using site-module packages
# ==================================================================
from Geant4 import *
import Qmaterials, NISTmaterials
import ExN03geom
import ExN03pl
import ParticleGun, MedicalBeam
import g4py.Qmaterials, g4py.NISTmaterials
import g4py.ExN03geom
import g4py.ExN03pl
import g4py.ParticleGun, g4py.MedicalBeam
import sys
from time import *
from subprocess import *
@@ -30,7 +30,7 @@ HepRandom.setTheSeed(20050830L)
# ------------------------------------------------------------------
# NIST materials
#NISTmaterials.Construct()
#g4py.NISTmaterials.Construct()
# ------------------------------------------------------------------
# setup for geometry
@@ -38,13 +38,13 @@ HepRandom.setTheSeed(20050830L)
# normal way for constructing user geometry
exN03geom= ExN03geom.ExN03DetectorConstruction()
exN03geom= g4py.ExN03geom.ExN03DetectorConstruction()
gRunManager.SetUserInitialization(exN03geom)
# 2nd way, short-cut way
#ExN01geom.Construct()
#ExN03geom.Construct()
#g4py.ExN01geom.Construct()
#g4py.ExN03geom.Construct()
# magnetic field
#exN03geom.SetMagField(0.1 * tesla)
@@ -53,23 +53,23 @@ gRunManager.SetUserInitialization(exN03geom)
# setup for physics list
# ------------------------------------------------------------------
# normal way for constructing user physics list
exN03PL= ExN03pl.ExN03PhysicsList()
exN03PL= g4py.ExN03pl.ExN03PhysicsList()
gRunManager.SetUserInitialization(exN03PL)
# 2nd way, short-cut way
#ExN01pl.Construct()
#EMSTDpl.Construct()
#g4py.ExN01pl.Construct()
#g4py.EMSTDpl.Construct()
# ------------------------------------------------------------------
# setup for primary generator action
# ------------------------------------------------------------------
# normal way for constructing user physics list
#pgPGA= ParticleGun.ParticleGunAction()
#pgPGA= g4py.ParticleGun.ParticleGunAction()
#gRunManager.SetUserAction(pgPGA)
#pg= pgPGA.GetParticleGun()
# 2nd way, short-cut way
pg= ParticleGun.Construct()
pg= g4py.ParticleGun.Construct()
# set parameters of particle gun
pg.SetParticleByName("e-")
@@ -1,11 +1,13 @@
#!/usr/bin/python
#### 2006 Sep 26, the first draft version
## Wired not yet. g4pipe control and Popen
from Geant4 import *
import Qmaterials, NISTmaterials
import ExN03geom
import ExN03pl
import ParticleGun, MedicalBeam
import g4py.Qmaterials, g4py.NISTmaterials
import g4py.ExN03geom
import g4py.ExN03pl
import g4py.ParticleGun, g4py.MedicalBeam
import sys
from time import *
from subprocess import *
@@ -27,20 +29,20 @@ HepRandom.setTheSeed(20050830L)
# NIST materials
#NISTmaterials.Construct()
#g4py.NISTmaterials.Construct()
# ------------------------------------------------------------------
# setup for geometry
# ------------------------------------------------------------------
# normal way for constructing user geometry
exN03geom= ExN03geom.ExN03DetectorConstruction()
exN03geom= g4py.ExN03geom.ExN03DetectorConstruction()
gRunManager.SetUserInitialization(exN03geom)
# 2nd way, short-cut way
#ExN01geom.Construct()
#ExN03geom.Construct()
#g4py.ExN01geom.Construct()
#g4py.ExN03geom.Construct()
# magnetic field
#exN03geom.SetMagField(0.1 * tesla)
@@ -49,23 +51,23 @@ gRunManager.SetUserInitialization(exN03geom)
# setup for physics list
# ------------------------------------------------------------------
# normal way for constructing user physics list
exN03PL= ExN03pl.ExN03PhysicsList()
exN03PL= g4py.ExN03pl.ExN03PhysicsList()
gRunManager.SetUserInitialization(exN03PL)
# 2nd way, short-cut way
#ExN01pl.Construct()
#g4py.ExN01pl.Construct()
# ------------------------------------------------------------------
# setup for primary generator action
# ------------------------------------------------------------------
# normal way for constructing user physics list
#pgPGA= ParticleGun.ParticleGunAction()
#pgPGA= g4py.ParticleGun.ParticleGunAction()
#gRunManager.SetUserAction(pgPGA)
#pg= pgPGA.GetParticleGun()
# 2nd way, short-cut way
pg= ParticleGun.Construct()
pg= g4py.ParticleGun.Construct()
# set parameters of particle gun
pg.SetParticleByName("e-")
+5 -5
View File
@@ -5,8 +5,8 @@
# Plotting photon cross sections and stopping power with ROOT
# ==================================================================
from Geant4 import *
import NISTmaterials
from EZsim import *
import g4py.NISTmaterials
import g4py.ezgeom
# ==================================================================
# geometry setup
@@ -16,15 +16,15 @@ from EZsim import *
# setup
# ------------------------------------------------------------------
def Configure():
NISTmaterials.Construct()
EZgeom.Construct()
g4py.NISTmaterials.Construct()
g4py.ezgeom.Construct()
# ------------------------------------------------------------------
# constructing geometry
# ------------------------------------------------------------------
def SetMaterial(material_name):
material= gNistManager.FindOrBuildMaterial(material_name)
EZgeom.SetWorldMaterial(material)
g4py.ezgeom.SetWorldMaterial(material)
# ==================================================================
+4 -3
View File
@@ -5,14 +5,15 @@
# Plotting photon cross sections and stopping power
# ==================================================================
from Geant4 import *
import ExN03pl
import g4py.ExN03pl
import g4py.emcalculator
import EmPlot
# initialize
EmPlot.Configure()
# user physics list
ExN03pl.Construct()
g4py.ExN03pl.Construct()
# target material
material= "G4_Cu"
@@ -30,7 +31,7 @@ for n in range(-3, 3):
# calculate stopping power
pname= "e-"
dedx_list= CalculateDEDX(pname, material, elist, 1)
dedx_list= g4py.emcalculator.CalculateDEDX(pname, material, elist, 1)
xlist_tot=[]
xlist_ioni=[]
xlist_brems=[]
+4 -3
View File
@@ -5,14 +5,15 @@
# Plotting photon cross sections and stopping power
# ==================================================================
from Geant4 import *
import ExN03pl
import g4py.ExN03pl
import g4py.emcalculator
import EmPlot
# initialize
EmPlot.Configure()
# user physics list
ExN03pl.Construct()
g4py.ExN03pl.Construct()
# target material
material= "G4_Pb"
@@ -30,7 +31,7 @@ for n in range(-3, 4):
# calculate cross sections
xsection_list= CalculatePhotonCrossSection(material, elist, 1)
xsection_list= g4py.emcalculator.CalculatePhotonCrossSection(material, elist, 1)
xlist_tot=[]
xlist_comp=[]
xlist_pe=[]
+388 -530
View File
@@ -1,531 +1,389 @@
<?xml version="1.0" encoding="UTF-8" ?>
<gdml xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="GDMLSchema/gdml.xsd" >
<define>
<rotation name="tube0xc18410invoxel0xc15240r" unit="degree" x="-90" y="-0" z="0" />
<position name="cal0xc188b0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="20" />
<position name="cal0xc18820inAREA_LV0xc14980p" unit="mm" x="50" y="0" z="20" />
<position name="cal0xc18790inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="20" />
<position name="cal0xc18700inAREA_LV0xc14980p" unit="mm" x="-50" y="0" z="20" />
<position name="cal0xc18670inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="20" />
<position name="voxel0xc18140inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-50" />
<position name="voxel0xc180b0inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-50" />
<position name="voxel0xc18020inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-50" />
<position name="voxel0xc17f90inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-50" />
<position name="voxel0xc17f00inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-50" />
<position name="voxel0xc17e70inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-50" />
<position name="voxel0xc168c0inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-50" />
<position name="voxel0xc16830inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-50" />
<position name="voxel0xc167a0inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-50" />
<position name="voxel0xc16710inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-50" />
<position name="voxel0xc179d0inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-50" />
<position name="voxel0xc17940inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-50" />
<position name="voxel0xc178b0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-50" />
<position name="voxel0xc17820inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-50" />
<position name="voxel0xc17790inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-50" />
<position name="voxel0xc17700inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-70" />
<position name="voxel0xc17670inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-70" />
<position name="voxel0xc175e0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-70" />
<position name="voxel0xc17550inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-70" />
<position name="voxel0xc174c0inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-70" />
<position name="voxel0xc17430inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-70" />
<position name="voxel0xc173a0inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-70" />
<position name="voxel0xc17310inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-70" />
<position name="voxel0xc17280inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-70" />
<position name="voxel0xc171f0inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-70" />
<position name="voxel0xc17160inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-70" />
<position name="voxel0xc170d0inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-70" />
<position name="voxel0xc17040inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-70" />
<position name="voxel0xc16fb0inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-70" />
<position name="voxel0xc16f20inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-70" />
<position name="voxel0xc16e90inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-90" />
<position name="voxel0xc16e00inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-90" />
<position name="voxel0xc16d70inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-90" />
<position name="voxel0xc16ce0inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-90" />
<position name="voxel0xc16c50inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-90" />
<position name="voxel0xc16bc0inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-90" />
<position name="voxel0xc16b30inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-90" />
<position name="voxel0xc16aa0inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-90" />
<position name="voxel0xc16a10inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-90" />
<position name="voxel0xc16980inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-90" />
<position name="voxel0xc16920inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-90" />
<position name="voxel0xc15dc0inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-90" />
<position name="voxel0xc166b0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-90" />
<position name="voxel0xc16620inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-90" />
<position name="voxel0xc16590inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-90" />
<position name="voxel0xc16500inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-110" />
<position name="voxel0xc16470inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-110" />
<position name="voxel0xc163e0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-110" />
<position name="voxel0xc16350inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-110" />
<position name="voxel0xc162c0inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-110" />
<position name="voxel0xc16230inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-110" />
<position name="voxel0xc161a0inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-110" />
<position name="voxel0xc16110inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-110" />
<position name="voxel0xc16080inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-110" />
<position name="voxel0xc15ff0inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-110" />
<position name="voxel0xc15f60inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-110" />
<position name="voxel0xc15ed0inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-110" />
<position name="voxel0xc158b0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-110" />
<position name="voxel0xc15d30inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-110" />
<position name="voxel0xc15ca0inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-110" />
<position name="voxel0xc15c10inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-130" />
<position name="voxel0xc15b80inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-130" />
<position name="voxel0xc15af0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-130" />
<position name="voxel0xc15a60inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-130" />
<position name="voxel0xc159d0inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-130" />
<position name="voxel0xc15940inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-130" />
<position name="voxel0xc15820inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-130" />
<position name="voxel0xc15790inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-130" />
<position name="voxel0xc15700inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-130" />
<position name="voxel0xc15670inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-130" />
<position name="voxel0xc15610inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-130" />
<position name="voxel0xc15580inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-130" />
<position name="voxel0xc154c0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-130" />
<position name="voxel0xc15430inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-130" />
<position name="voxel0xc15380inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-130" />
</define>
<materials>
<element Z="7" formula="N" name="Nitrogen0xc03430" >
<atom value="14.0067" />
</element>
<element Z="8" formula="O" name="Oxygen0xc03600" >
<atom value="15.9994" />
</element>
<material formula=" " name="Vacuum0xc041f0" >
<D value="1e-25" />
<fraction n="0.7" ref="Nitrogen0xc03430" />
<fraction n="0.3" ref="Oxygen0xc03600" />
</material>
<element Z="18" formula="Ar" name="Argon0xc03b70" >
<atom value="39.948" />
</element>
<material formula=" " name="Air0xc04770" >
<D value="0.0012929" />
<fraction n="0.755078" ref="Nitrogen0xc03430" />
<fraction n="0.232116" ref="Oxygen0xc03600" />
<fraction n="0.0128064" ref="Argon0xc03b70" />
</material>
<material Z="18" formula=" " name="ArgonGas0xc051f0" >
<D value="0.00166042" />
<atom value="39.948" />
</material>
<element Z="6" formula="C" name="Carbon0xc032a0" >
<atom value="12.011" />
</element>
<element Z="1" formula="H" name="Hydrogen0x950310" >
<atom value="1.00794" />
</element>
<material formula=" " name="Ethane0xc060e0" >
<D value="0.00126349" />
<fraction n="0.798879" ref="Carbon0xc032a0" />
<fraction n="0.201121" ref="Hydrogen0x950310" />
</material>
<element Z="18" formula=" " name="ArgonGas0xc05a70" >
<atom value="39.948" />
</element>
<material formula=" " name="ArEthane0xc063b0" >
<D value="0.00146196" />
<fraction n="0.567878" ref="ArgonGas0xc05a70" />
<fraction n="0.345213" ref="Carbon0xc032a0" />
<fraction n="0.0869089" ref="Hydrogen0x950310" />
</material>
<material Z="14" formula=" " name="SiliconWafer0xc06e40" >
<D value="2.33" />
<atom value="28.0855" />
</material>
<material Z="13" formula=" " name="Al0xc07d10" >
<D value="2.7" />
<atom value="26.98" />
</material>
<material Z="26" formula=" " name="Iron0xc08580" >
<D value="7.87" />
<atom value="55.847" />
</material>
<material Z="82" formula=" " name="Lead0xc08ce0" >
<D value="11.35" />
<atom value="207.2" />
</material>
<material formula=" " name="Scinti0xc097f0" >
<D value="1.032" />
<fraction n="0.922579" ref="Carbon0xc032a0" />
<fraction n="0.077421" ref="Hydrogen0x950310" />
</material>
<element Z="14" formula="Si" name="Silicon0xc039a0" >
<atom value="28.0855" />
</element>
<material formula=" " name="Quartz0xc09a30" >
<D value="2.64" />
<fraction n="0.467435" ref="Silicon0xc039a0" />
<fraction n="0.532565" ref="Oxygen0xc03600" />
</material>
<element Z="11" formula="Na" name="Sodium0xc037c0" >
<atom value="22.9898" />
</element>
<element Z="53" formula="I" name="Iodine0xc03d40" >
<atom value="126.904" />
</element>
<material formula=" " name="NaI0xc0a290" >
<D value="3.67" />
<fraction n="0.153373" ref="Sodium0xc037c0" />
<fraction n="0.846627" ref="Iodine0xc03d40" />
</material>
<element Z="55" formula="Cs" name="Cesium0xc03f60" >
<atom value="132.905" />
</element>
<material formula=" " name="CsI0xc0aab0" >
<D value="4.51" />
<fraction n="0.511549" ref="Cesium0xc03f60" />
<fraction n="0.488451" ref="Iodine0xc03d40" />
</material>
</materials>
<solids>
<box aunit="radian" lunit="mm" name="AREA0xc145c0" x="300" y="300" z="300" />
<box aunit="radian" lunit="mm" name="voxel0xc151b0" x="20" y="200" z="20" />
<tube aunit="degree" deltaphi="360" lunit="mm" name="tube0xc181d0" rmax="9.5" rmin="0" startphi="0" z="200" />
<box aunit="radian" lunit="mm" name="cal0xc184a0" x="50" y="50" z="60" />
</solids>
<structure>
<volume name="tube0xc18280" >
<materialref ref="Al0xc07d10" />
<solidref ref="tube0xc181d0" />
</volume>
<volume name="voxel0xc15240" >
<materialref ref="Vacuum0xc041f0" />
<solidref ref="voxel0xc151b0" />
<physvol>
<volumeref ref="tube0xc18280" />
<rotationref ref="tube0xc18410invoxel0xc15240r" />
</physvol>
</volume>
<volume name="cal0xc18530" >
<materialref ref="CsI0xc0aab0" />
<solidref ref="cal0xc184a0" />
</volume>
<volume name="AREA_LV0xc14980" >
<materialref ref="Vacuum0xc041f0" />
<solidref ref="AREA0xc145c0" />
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc188b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18820inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18790inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18700inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18670inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc18140inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc180b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc18020inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17f90inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17f00inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17e70inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc168c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16830inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc167a0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16710inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc179d0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17940inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc178b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17820inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17790inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17700inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17670inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc175e0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17550inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc174c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17430inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc173a0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17310inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17280inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc171f0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17160inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc170d0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17040inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16fb0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16f20inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16e90inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16e00inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16d70inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16ce0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16c50inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16bc0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16b30inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16aa0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16a10inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16980inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16920inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15dc0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc166b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16620inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16590inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16500inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16470inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc163e0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16350inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc162c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16230inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc161a0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16110inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16080inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15ff0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15f60inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15ed0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc158b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15d30inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15ca0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15c10inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15b80inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15af0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15a60inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc159d0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15940inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15820inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15790inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15700inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15670inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15610inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15580inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc154c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15430inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15380inAREA_LV0xc14980p" />
</physvol>
</volume>
</structure>
<setup name="Default" version="1.0" >
<world ref="AREA_LV0xc14980" />
</setup>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/GDML_2_10_0/src/GDMLSchema/gdml.xsd">
<define/>
<materials>
<material Z="13" name="Al0x932cf0" state="solid">
<D unit="g/cm3" value="2.7"/>
<atom unit="g/mole" value="26.98"/>
</material>
<element Z="7" name="Nitrogen0x90fe50">
<atom unit="g/mole" value="14.00674"/>
</element>
<element Z="8" name="Oxygen0x91dc40">
<atom unit="g/mole" value="15.9994"/>
</element>
<material name="Vacuum0x916cf0" state="gas">
<D unit="g/cm3" value="1e-25"/>
<fraction n="0.7" ref="Nitrogen0x90fe50"/>
<fraction n="0.3" ref="Oxygen0x91dc40"/>
</material>
<element Z="55" name="Cesium0x90eed0">
<atom unit="g/mole" value="132.90543"/>
</element>
<element Z="53" name="Iodine0x61aa70">
<atom unit="g/mole" value="126.90447"/>
</element>
<material name="CsI0x935a90" state="solid">
<D unit="g/cm3" value="4.51"/>
<fraction n="0.511548751606463" ref="Cesium0x90eed0"/>
<fraction n="0.488451248393537" ref="Iodine0x61aa70"/>
</material>
</materials>
<solids>
<tube aunit="deg" deltaphi="360" lunit="mm" name="tube0x941cb0" rmax="9.5" rmin="0" startphi="0" z="200"/>
<box lunit="mm" name="voxel0x93f120" x="20" y="200" z="20"/>
<box lunit="mm" name="cal0x941f60" x="50" y="50" z="60"/>
<box lunit="mm" name="AREA0x93e380" x="300" y="300" z="300"/>
</solids>
<structure>
<volume name="tube0x941d60">
<materialref ref="Al0x932cf0"/>
<solidref ref="tube0x941cb0"/>
</volume>
<volume name="voxel0x93f1a0">
<materialref ref="Vacuum0x916cf0"/>
<solidref ref="voxel0x93f120"/>
<physvol name="tube0x941ee0">
<volumeref ref="tube0x941d60"/>
<rotation name="tube0x941ee0_rot" unit="deg" x="-90" y="0" z="0"/>
</physvol>
</volume>
<volume name="cal0x941fe0">
<materialref ref="CsI0x935a90"/>
<solidref ref="cal0x941f60"/>
</volume>
<volume name="AREA_LV0x93e970">
<materialref ref="Vacuum0x916cf0"/>
<solidref ref="AREA0x93e380"/>
<physvol name="voxel0x93f2d0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f2d0_pos" unit="mm" x="-140" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f370">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f370_pos" unit="mm" x="-120" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f3f0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f3f0_pos" unit="mm" x="-100" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f4a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f4a0_pos" unit="mm" x="-80" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f520">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f520_pos" unit="mm" x="-60" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f5c0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f5c0_pos" unit="mm" x="-40" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f640">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f640_pos" unit="mm" x="-20" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f6c0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f6c0_pos" unit="mm" x="0" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f740">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f740_pos" unit="mm" x="20" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f570">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f570_pos" unit="mm" x="40" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f880">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f880_pos" unit="mm" x="60" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f900">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f900_pos" unit="mm" x="80" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93f980">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f980_pos" unit="mm" x="100" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93fa00">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fa00_pos" unit="mm" x="120" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93fa80">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fa80_pos" unit="mm" x="140" y="0" z="-130"/>
</physvol>
<physvol name="voxel0x93fb00">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fb00_pos" unit="mm" x="-140" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93fb80">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fb80_pos" unit="mm" x="-120" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93f7c0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93f7c0_pos" unit="mm" x="-100" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93fd10">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fd10_pos" unit="mm" x="-80" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93fd90">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fd90_pos" unit="mm" x="-60" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93fe10">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fe10_pos" unit="mm" x="-40" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93fe90">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fe90_pos" unit="mm" x="-20" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93ff10">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93ff10_pos" unit="mm" x="0" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x93ff90">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93ff90_pos" unit="mm" x="20" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x940010">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940010_pos" unit="mm" x="40" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x940090">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940090_pos" unit="mm" x="60" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x940110">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940110_pos" unit="mm" x="80" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x940190">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940190_pos" unit="mm" x="100" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x940210">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940210_pos" unit="mm" x="120" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x940290">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940290_pos" unit="mm" x="140" y="0" z="-110"/>
</physvol>
<physvol name="voxel0x940310">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940310_pos" unit="mm" x="-140" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940390">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940390_pos" unit="mm" x="-120" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940410">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940410_pos" unit="mm" x="-100" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x93fc00">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fc00_pos" unit="mm" x="-80" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x93fc80">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x93fc80_pos" unit="mm" x="-60" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x9406a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9406a0_pos" unit="mm" x="-40" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940720">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940720_pos" unit="mm" x="-20" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x9407a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9407a0_pos" unit="mm" x="0" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940820">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940820_pos" unit="mm" x="20" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x9408a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9408a0_pos" unit="mm" x="40" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940920">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940920_pos" unit="mm" x="60" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x9409a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9409a0_pos" unit="mm" x="80" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940a20">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940a20_pos" unit="mm" x="100" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940aa0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940aa0_pos" unit="mm" x="120" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940b20">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940b20_pos" unit="mm" x="140" y="0" z="-90"/>
</physvol>
<physvol name="voxel0x940ba0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940ba0_pos" unit="mm" x="-140" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940c20">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940c20_pos" unit="mm" x="-120" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940ca0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940ca0_pos" unit="mm" x="-100" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940d20">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940d20_pos" unit="mm" x="-80" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940da0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940da0_pos" unit="mm" x="-60" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940e20">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940e20_pos" unit="mm" x="-40" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940ea0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940ea0_pos" unit="mm" x="-20" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940f20">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940f20_pos" unit="mm" x="0" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x940fa0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940fa0_pos" unit="mm" x="20" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x941020">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941020_pos" unit="mm" x="40" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x9410a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9410a0_pos" unit="mm" x="60" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x941120">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941120_pos" unit="mm" x="80" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x9411a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9411a0_pos" unit="mm" x="100" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x941220">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941220_pos" unit="mm" x="120" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x9412a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9412a0_pos" unit="mm" x="140" y="0" z="-70"/>
</physvol>
<physvol name="voxel0x941320">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941320_pos" unit="mm" x="-140" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x9413a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9413a0_pos" unit="mm" x="-120" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x941420">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941420_pos" unit="mm" x="-100" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x9414a0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9414a0_pos" unit="mm" x="-80" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x941520">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941520_pos" unit="mm" x="-60" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x940490">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940490_pos" unit="mm" x="-40" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x940510">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940510_pos" unit="mm" x="-20" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x940590">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940590_pos" unit="mm" x="0" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x940610">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x940610_pos" unit="mm" x="20" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x9419b0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x9419b0_pos" unit="mm" x="40" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x941a30">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941a30_pos" unit="mm" x="60" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x941ab0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941ab0_pos" unit="mm" x="80" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x941b30">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941b30_pos" unit="mm" x="100" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x941bb0">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941bb0_pos" unit="mm" x="120" y="0" z="-50"/>
</physvol>
<physvol name="voxel0x941c30">
<volumeref ref="voxel0x93f1a0"/>
<position name="voxel0x941c30_pos" unit="mm" x="140" y="0" z="-50"/>
</physvol>
<physvol name="cal0x942110">
<volumeref ref="cal0x941fe0"/>
<position name="cal0x942110_pos" unit="mm" x="-100" y="0" z="20"/>
</physvol>
<physvol name="cal0x942190">
<volumeref ref="cal0x941fe0"/>
<position name="cal0x942190_pos" unit="mm" x="-50" y="0" z="20"/>
</physvol>
<physvol name="cal0x942210">
<volumeref ref="cal0x941fe0"/>
<position name="cal0x942210_pos" unit="mm" x="0" y="0" z="20"/>
</physvol>
<physvol name="cal0x942290">
<volumeref ref="cal0x941fe0"/>
<position name="cal0x942290_pos" unit="mm" x="50" y="0" z="20"/>
</physvol>
<physvol name="cal0x942310">
<volumeref ref="cal0x941fe0"/>
<position name="cal0x942310_pos" unit="mm" x="100" y="0" z="20"/>
</physvol>
</volume>
</structure>
<setup name="Default" version="1.0">
<world ref="AREA_LV0x93e970"/>
</setup>
</gdml>
@@ -1,56 +0,0 @@
#!/usr/bin/python
# ==================================================================
# An example for reading a GDML file
#
# ==================================================================
from Geant4 import *
from Geant4.G4g4gdml import *
import ExN01pl, ParticleGun
# ==================================================================
# user actions in python
# ==================================================================
class MyDetectorConstruction(G4VUserDetectorConstruction):
"My Detector Construction"
def __init__(self):
G4VUserDetectorConstruction.__init__(self)
self.world= None
self.gdml_parser= G4GDMLParser()
# -----------------------------------------------------------------
def __del__(self):
pass
# -----------------------------------------------------------------
def Construct(self):
self.gdml_parser.Read("qgeom.gdml")
self.world= self.gdml_parser.GetWorldVolume()
return self.world
# ==================================================================
# main
# ==================================================================
# set geometry
myDC= MyDetectorConstruction()
gRunManager.SetUserInitialization(myDC)
# minimal physics list
ExN01pl.Construct()
# set primary generator action
ParticleGun.Construct()
# initialize
gRunManager.Initialize()
# visualization
gApplyUICommand("/vis/open OGLIX")
gApplyUICommand("/vis/scene/create")
gApplyUICommand("/vis/scene/add/volume")
gApplyUICommand("/vis/sceneHandler/attach")
gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
+7 -17
View File
@@ -4,9 +4,7 @@
#
# ==================================================================
from Geant4 import *
from Geant4.G4gdml import *
import ExN01pl, ParticleGun
import g4py.ExN01pl, g4py.ParticleGun
# ==================================================================
# user actions in python
@@ -17,24 +15,16 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
def __init__(self):
G4VUserDetectorConstruction.__init__(self)
self.world= None
self.sxp= SAXProcessor()
self.config= ProcessingConfigurator()
self.gdml_parser= G4GDMLParser()
# -----------------------------------------------------------------
def __del__(self):
self.sxp.Finalize()
pass
# -----------------------------------------------------------------
def Construct(self):
self.sxp.Initialize()
self.config.SetURI("qgeom.gdml")
self.config.SetSetupName("Default")
self.sxp.Configure(self.config)
self.sxp.Run()
self.world= GDMLProcessor.GetInstance().GetWorldVolume()
self.gdml_parser.Read("qgeom.gdml")
self.world= self.gdml_parser.GetWorldVolume()
return self.world
@@ -47,10 +37,10 @@ myDC= MyDetectorConstruction()
gRunManager.SetUserInitialization(myDC)
# minimal physics list
ExN01pl.Construct()
g4py.ExN01pl.Construct()
# set primary generator action
ParticleGun.Construct()
g4py.ParticleGun.Construct()
# initialize
gRunManager.Initialize()
+10 -10
View File
@@ -4,23 +4,21 @@
#
# ==================================================================
from Geant4 import *
from Geant4.G4gdml import *
import Qmaterials, Qgeom
import ExN01pl, ParticleGun
import g4py.Qmaterials, g4py.Qgeom
import g4py.ExN01pl, g4py.ParticleGun
# ==================================================================
# main
# ==================================================================
# set geometry
Qmaterials.Construct()
Qgeom.Construct()
g4py.Qmaterials.Construct()
g4py.Qgeom.Construct()
# minimal physics list
ExN01pl.Construct()
g4py.ExN01pl.Construct()
# set primary generator action
ParticleGun.Construct()
g4py.ParticleGun.Construct()
# initialize
gRunManager.Initialize()
@@ -36,6 +34,8 @@ gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
print "\n*** write to a GDML file..."
navigator= gTransportationManager.GetNavigatorForTracking()
world_volume= navigator.GetWorldVolume()
gdml_writer= G4GDMLWriter("GDMLSchema/gdml.xsd", "qgeom.gdml")
gdml_writer.DumpGeometryInfo(world_volume)
gdml_parser = G4GDMLParser()
gdml_parser.Write("qgeom.gdml", world_volume)