Import Geant4 9.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:37:50 +02:00
parent a8e9364cea
commit 96c8bcd0af
6923 changed files with 198390 additions and 41849 deletions
+699 -100
View File
@@ -18,9 +18,9 @@
# you may fetch it yourself from your nearest archive site.)
#
# $Id: Configure,v 1.98 2007/06/22 11:49:47 bmorgan Exp $
# $Id: Configure,v 1.103 2007/11/28 13:49:23 bmorgan Exp $
#
# Generated on Fri Jun 22 12:32:16 BST 2007 [metaconfig 3.0 PL70]
# Generated on Wed Nov 28 13:43:54 GMT 2007 [metaconfig 3.0 PL70]
cat >/tmp/c1$$ <<EOF
WARNING!!!!!
@@ -166,6 +166,7 @@ g4workdir=''
g4bin=''
g4lib=''
g4tmp=''
g4abladata=''
g4data=''
g4elasticdata=''
g4ledata=''
@@ -191,6 +192,7 @@ g4ui_build_terminal_session=''
g4ui_build_win32_session=''
g4ui_build_xaw_session=''
g4ui_build_xm_session=''
g4ui_none=''
g4ui_use_gag=''
g4ui_use_tcsh=''
g4ui_use_terminal=''
@@ -203,6 +205,9 @@ g4ui_xawlibs=''
g4vis_xmflags=''
g4vis_xmhome=''
g4vis_xmlibs=''
g4_qthome=''
g4ui_build_qt_session=''
g4ui_use_qt=''
g4vis_build_asciitree_driver=''
g4vis_build_dawn_driver=''
g4vis_build_dawnfile_driver=''
@@ -232,6 +237,10 @@ g4vis_use_vrmlfile=''
g4vis_xmflags=''
g4vis_xmhome=''
g4vis_xmlibs=''
g4vis_build_openglqt_driver=''
g4vis_use_openglqt=''
g4gdml_xercesc_root=''
g4lib_build_gdml=''
g4wanalysis_build=''
g4wanalysis_build_jas=''
g4wanalysis_build_lab=''
@@ -276,6 +285,20 @@ if test -f /etc/unixtovms.exe; then
eunicefix=/etc/unixtovms.exe
fi
#INITIALIZE QT UI OPTIONS
g4ui_build_qt_session='n'
g4ui_use_qt='n'
g4_qthome=''
#END QT UI OPTIONS
#INITIALIZE QT UI OPTIONS
g4ui_build_qt_session='n'
g4ui_use_qt='n'
g4_qthome=''
#END QT UI OPTIONS
#INITIALIZE QT VIS DRIVER OPTIONS
g4vis_build_openglqt_driver='n'
g4ui_use_openglqt='n'
#END QT VIS DRIVER OPTIONS
: Find the basic shell for Bourne shell scripts
case "$sh" in
@@ -1117,6 +1140,7 @@ loclist="
awk
cat
expr
grep
rm
sed
touch
@@ -2739,16 +2763,23 @@ esac
case "$g4ledata" in
'')
g4ledata=$g4data/G4EMLOW4.3
g4ledata=$g4data/G4EMLOW5.1
;;
esac
case "$g4neutronhpcrosssections" in
'')
g4neutronhpcrosssections=$g4data/G4NDL3.11
g4neutronhpcrosssections=$g4data/G4NDL3.12
;;
esac
case "$g4abladata" in
'')
g4abladata=$g4data/G4ABLA3.0
;;
esac
#case "$g4elasticdata" in
#'')
# g4elasticdata=$g4data/G4ELASTIC1.1
@@ -2771,6 +2802,8 @@ Please, specify default directory where ALL the Geant4 data is installed:
G4NEUTRONHPDATA: $g4neutronhpcrosssections
G4ABLADATA: $g4abladata
You will be asked about customizing these next.
EOM`
@@ -2791,8 +2824,9 @@ gans=$ans
g4levelgammadata=$g4data/PhotonEvaporation2.0
g4radioactivedata=$g4data/RadioactiveDecay3.2
g4ledata=$g4data/G4EMLOW4.3
g4neutronhpcrosssections=$g4data/G4NDL3.11
g4ledata=$g4data/G4EMLOW5.1
g4neutronhpcrosssections=$g4data/G4NDL3.12
g4abladata=$g4data/G4ABLA3.0
# g4elasticdata=$g4data/G4ELASTIC1.1
fi
# done
@@ -2813,6 +2847,8 @@ Please, specify default directory where the Geant4 data is installed:
4) G4NEUTRONHPDATA: $g4neutronhpcrosssections
5) G4ABLADATA: $g4abladata
To modify default settings, select number above (e.g. 2)
EOM`
@@ -2843,18 +2879,26 @@ gans=$ans
3)
dflt=$g4ledata
fn='d~'
rp="Where is G4EMLOW4.3 data installed ?"
rp="Where is G4EMLOW5.1 data installed ?"
. ./getfile
g4ledata=$ans
;;
4)
dflt=$g4neutronhpcrosssections
fn='d~'
rp="Where is G4NDL3.11 data installed?"
rp="Where is G4NDL3.12 data installed?"
. ./getfile
g4neutronhpcrosssections=$ans
;;
5)
dflt=$g4abladata
fn='d~'
rp="Where is G4ABLA3.0 data installed?"
. ./getfile
g4abladata=$ans
;;
# 5)
# dflt=$g4elasticdata
# fn='d~'
@@ -3367,6 +3411,7 @@ done
fi
fi # if !Win
echo " "
case "$g4global" in
'')
@@ -3573,98 +3618,6 @@ gans=$ans
done
echo " "
case "$g4make" in
'')
g4make=gmake
;;
esac
echo ""
g4_gmake_version=`(gmake -v) 2>/dev/null`
case $g4_gmake_version in
GNU*)
g4_gmake=y
;;
*)
g4_gmake=n
;;
esac
g4_make_version=`(make -v) 2>/dev/null`
case $g4_make_version in
GNU*)
g4_make=y
;;
*)
g4_make=n
;;
esac
if [ $g4_gmake = y ] ; then
g4make=gmake
g4message=`cat << EOM
G4MAKE
You have GNU make which could be used to build GEANT4.
You can select your own 'make' program if you want.
EOM`
fi
if [ $g4_gmake = n ] && [ $g4_make = y ] ; then
g4make=make
g4message=`cat << EOM
G4MAKE
You have GNU make which could be used to build GEANT4.
You can select your own 'make' program if you want.
EOM`
fi
if [ $g4_gmake = n ] && [ $g4_make = n ] ; then
g4make=none
g4message=`cat << EOM
G4MAKE
You have NO GNU make which could be used to build GEANT4.
Please select your own 'make' program compatible with GNU make.
EOM`
dflt=$g4make
rp=$g4message
. ./myread
gans=$ans
case $gans in
'')
g4make=$dflt
;;
*)
g4make=$gans
;;
esac
fi
echo " "
case "$g4ui_none" in
@@ -3744,6 +3697,9 @@ case "$g4ui_use_tcsh" in
;;
esac
echo ""
g4message=`cat << EOM
@@ -4339,7 +4295,203 @@ gans=y
;;
esac
#
# BEGIN QT/QTUI PROBE
#
#
# We only perform the query/probe for Linux-g++ and Darwin-g++ systems..
#
if test "x$g4system" = "xLinux-g++" -o "x$g4system" = "xDarwin-g++" ; then
# Now, IF g4ui_none HAS NOT BEEN SET TO Y, proceed to the query/probe section
if test "x$g4ui_none" = "xn" ; then
# Query the user to see if they want to build the Qt UI module
g4message=`cat << EOM
G4UI_BUILD_QT_SESSION
G4UI_USE_QT
Setting these variables will enable the building of the G4 Qt based
user interface module and the use of this module in your applications
respectively.
The Qt4 headers, libraries and binaries are required to enable the
building of this module.
### WARNING! THIS FEATURE IS EXPERIMENTAL IN THIS RELEASE! ###
### WARNING! THIS FEATURE WILL ONLY WORK WITH Qt4! ###
Do you want to enable build and use of this module?
EOM`
#
# read in the user response
#
dflt=$g4ui_build_qt_session
rp=$g4message
. ./myread
gans=$ans
#
# Check response
#
case $gans in
n*|N*)
g4ui_build_qt_session=n
g4ui_use_qt=n
;;
y*|Y*)
g4ui_build_qt_session=y
g4ui_use_qt=y
;;
esac
#########################################
#####################################################################
# Now, if we want to build/use the Qt UI module, we need to probe for
# a Qt4 installation
#
if test "x$g4ui_build_qt_session" = "xy" ; then
echo " "
g4_havegoodqt=no
g4_qthome=`./loc qglobal.h no /usr/include/Qt /usr/local/include/Qt /opt/local/include/Qt /sw/include/Qt`
echo "checking for Qt4 installation... $g4_qthome"
#If we found an installation, proceed to other tests.
if test "x$g4_qthome" != "xno" ; then
#Set Qt installation to good at this point
g4_havegoodqt=yes
#Check that this is Qt4...
g4_qtver=`$grep QT_VERSION_STR $g4_qthome | $sed 's/.* \"\([0-9]\)\..*\"/\1/'`
echo "checking Qt version... $g4_qtver"
#Now strip qthome back so we can check for moc...
g4_qthome=`dirname $g4_qthome`
g4_qthome=`dirname $g4_qthome`
g4_qthome=`dirname $g4_qthome`
#If version is o.k, check for moc
if test "x$g4_qtver" = "x4" ; then
#Check for moc
g4_qthavemoc=`./loc moc no $g4_qthome/bin`
echo "checking for moc... $g4_qthavemoc"
if test "x$g4_qthavemoc" = "xno" ; then
g4_havegoodqt=no
fi
else
g4_havegoodqt=no
fi #END CHECK Qt VERSION
fi #END CHECK QTHOME
#
# END QT AUTOPROBE
####################################################################
####################################################################
# Based on result of Qt autoprobe, we decide if user input is needed to
# locate Qt...
#
if test "x$g4_havegoodqt" = "xno" ; then
promptend="no"
qthomeloc="the standard locations"
while test "x$promptend" = "xno" ; do
g4message=`cat << EOM
Autodetection failed to locate Qt4 in $qthomeloc on your system.
Please enter the path to your Qt4 install (i.e. if Qt4 is installed
in PATH/include/Qt, or PATH/include, enter PATH), or type '-' to
CANCEL the build of the Qt UI module.
Qt path:
EOM`
dflt="/usr"
fn='d~(-)'
rp=$g4message
. ./getfile
#Check for user cancellation
if test "x$ans" = "x-" ; then
g4ui_build_qt_session=n
g4ui_use_qt=n
g4_qthome=""
echo "build/use of Qt UI module cancelled..."
promptend=yes
else
#We want to probe for Qt in the user supplied directory
echo " "
qthomeloc=$ans
g4_havegoodqt=no
g4_qthome=`./loc qglobal.h no $ans/include/Qt $ans/include`
echo "checking for Qt4 installation... $g4_qthome"
#If we found an installation, proceed to other tests.
if test "x$g4_qthome" != "xno" ; then
#Set Qt installation to good at this point
g4_havegoodqt=yes
#Check that this is Qt4...
g4_qtver=`$grep QT_VERSION_STR $g4_qthome | $sed 's/.* \"\([0-9]\)\..*\"/\1/'`
echo "checking Qt version... $g4_qtver"
#Now strip qthome back so we can check for moc...
g4_qthome=`dirname $g4_qthome`
#At this point we could have include/Qt
#or include
if test `basename $g4_qthome` = "Qt" ; then
g4_qthome=`dirname $g4_qthome`
g4_qthome=`dirname $g4_qthome`
else
g4_qthome=`dirname $g4_qthome`
fi
#If version is o.k, check for moc
if test "x$g4_qtver" = "x4" ; then
#Check for moc
g4_qthavemoc=`./loc moc no $g4_qthome/bin`
echo "checking for moc... $g4_qthavemoc"
if test "x$g4_qthavemoc" = "xno" ; then
g4_havegoodqt=no
fi
else
g4_havegoodqt=no
fi #END CHECK Qt VERSION
fi #END CHECK QTHOME
#If we have a good Qt, end prompt
if test "x$g4_havegoodqt" = "xyes" ; then
promptend=yes
fi
fi #END CHECK USER CANCELLATION
done #END USER PROMPT FOR QT DETECTION
fi #END USER DIRECTED QT DETECTION
#
#END QT USER INPUT PROBE
####################################################################
fi #END CHECK OF G4UI_BUILD_QT_SESSION=Y
###########################################
fi #END TEST G4UI_NONE=N
fi #END TEST G4SYSTEM = Linux-g++ OR Darwin-g++
########################
echo " "
case "$g4vis_none" in
'')
@@ -5615,6 +5767,444 @@ fi # if need
###########################################
fi # if platform (Unix vs Win)
#
# BEGIN QTVIS/QT PROBE
#
#
# We only run on a Linux-g++ or Darwin-g++ system
#
if test "x$g4system" = "xLinux-g++" -o "x$g4system" = "xDarwin-g++" ; then
# Only proceed further if g4vis_none is not set
if test "x$g4vis_none" = "xn" ; then
#Query the user on whether to activate the module
g4message=`cat << EOM
G4VIS_BUILD_OPENGLQT_DRIVER
G4VIS_USE_OPENGLQT
Setting these variables will enable the building of the G4 OpenGL Qt based
visualisation driver and the use of this driver in your applications
respectively.
The Qt4 headers, libraries and binaries are required to enable the
building of this module.
### WARNING! THIS FEATURE IS EXPERIMENTAL IN THIS RELEASE! ###
### WARNING! THIS FEATURE WILL ONLY WORK WITH Qt4! ###
Do you want to enable build and use of this module?
EOM`
#Read the user response
dflt=$g4vis_build_openglqt_driver
rp=$g4message
. ./myread
gans=$ans
#
# Check response
#
case $gans in
n*|N*)
g4vis_build_openglqt_driver=n
g4vis_use_openglqt=n
;;
y*|Y*)
g4vis_build_openglqt_driver=y
g4vis_use_openglqt=y
;;
esac
###################
####################################################################
# Now, if we have selected to build the driver, we need to check for
# a Qt4 installation, which may have been done for use by the UI
# module...
#
if test "x$g4vis_build_openglqt_driver" = "xy" ; then
#Now check whether g4_qthome has been set previously - if it hasn't
#proceed to probe for Qt4... (assume it's unfiltered, i.e. not
#set to '' by earlier probe if it was /usr or /usr/local
if test "x$g4_qthome" != "x" ; then
echo " "
echo "configure: Qt4 preconfigured, no recheck neccessary"
else
#################################################################
#We repeat the search used for the UI module
echo " "
g4_havegoodqt=no
g4_qthome=`./loc qglobal.h no /usr/include/Qt /usr/local/include/Qt /opt/local/include/Qt /sw/include/Qt`
echo "checking for Qt4 installation... $g4_qthome"
#If we found an installation, proceed to other tests.
if test "x$g4_qthome" != "xno" ; then
#Set Qt installation to good at this point
g4_havegoodqt=yes
#Check that this is Qt4...
g4_qtver=`$grep QT_VERSION_STR $g4_qthome | $sed 's/.* \"\([0-9]\)\..*\"/\1/'`
echo "checking Qt version... $g4_qtver"
#Now strip qthome back so we can check for moc...
g4_qthome=`dirname $g4_qthome`
g4_qthome=`dirname $g4_qthome`
g4_qthome=`dirname $g4_qthome`
#If version is o.k, check for moc
if test "x$g4_qtver" = "x4" ; then
#Check for moc
g4_qthavemoc=`./loc moc no $g4_qthome/bin`
echo "checking for moc... $g4_qthavemoc"
if test "x$g4_qthavemoc" = "xno" ; then
g4_havegoodqt=no
fi
else
g4_havegoodqt=no
fi #END CHECK Qt VERSION
fi #END CHECK QTHOME
#
# END QT AUTOPROBE
# Based on result of Qt autoprobe, we decide if user input is
# needed to locate Qt...
#
if test "x$g4_havegoodqt" = "xno" ; then
promptend="no"
qthomeloc="the standard locations"
while test "x$promptend" = "xno" ; do
g4message=`cat << EOM
Autodetection failed to locate Qt4 in $qthomeloc on your system.
Please enter the path to your Qt4 install (i.e. if Qt4 is installed
in PATH/include/Qt, or PATH/include, enter PATH), or type '-' to
CANCEL the build of the Qt UI module.
Qt path:
EOM`
dflt="/usr"
fn='d~(-)'
rp=$g4message
. ./getfile
#Check for user cancellation
if test "x$ans" = "x-" ; then
g4ui_build_qt_session=n
g4ui_use_qt=n
g4_qthome=""
echo "build/use of OpenGl Qt driver cancelled..."
promptend=yes
else
#We want to probe for Qt in the user supplied directory
echo " "
qthomeloc=$ans
g4_havegoodqt=no
g4_qthome=`./loc qglobal.h no $ans/include/Qt $ans/include`
echo "checking for Qt4 installation... $g4_qthome"
#If we found an installation, proceed to other tests.
if test "x$g4_qthome" != "xno" ; then
#Set Qt installation to good at this point
g4_havegoodqt=yes
#Check that this is Qt4...
g4_qtver=`$grep QT_VERSION_STR $g4_qthome | $sed 's/.* \"\([0-9]\)\..*\"/\1/'`
echo "checking Qt version... $g4_qtver"
#Now strip qthome back so we can check for moc...
g4_qthome=`dirname $g4_qthome`
#At this point we could have include/Qt
#or include
if test `basename $g4_qthome` = "Qt" ; then
g4_qthome=`dirname $g4_qthome`
g4_qthome=`dirname $g4_qthome`
else
g4_qthome=`dirname $g4_qthome`
fi
#If version is o.k, check for moc
if test "x$g4_qtver" = "x4" ; then
#Check for moc
g4_qthavemoc=`./loc moc no $g4_qthome/bin`
echo "checking for moc... $g4_qthavemoc"
if test "x$g4_qthavemoc" = "xno" ; then
g4_havegoodqt=no
fi
else
g4_havegoodqt=no
fi #END CHECK Qt VERSION
fi #END CHECK QTHOME
#If we have a good Qt, end prompt
if test "x$g4_havegoodqt" = "xyes" ; then
promptend=yes
fi
fi #END CHECK USER CANCELLATION
done #END USER PROMPT FOR QT DETECTION
fi #END USER DIRECTED QT DETECTION
#
#END QT USER INPUT PROBE
#################################################################
fi #END TEST G4_QTHOME IS SET
fi #END TEST G4VIS_BUILD_OPENGLQT_DRIVER = y
#
# Put a filter in here on /usr and /usr/local as QTHOME in line
# with other paths - done here as this is the last place QT is
# checked for
#DEACTIVATED AT PRESENT BECAUSE OF USE OF MOC
#
#if test "x$g4_qthome" = "x/usr" -o "x$g4_qthome" = "x/usr/local" ; then
# g4_qthome=""
#fi
fi #END TEST G4VIS_NONE IS N
fi #END TEST G4SYSTEM IS Linux-g++ OR Darwin-g++
#
# END OF QTVIS/QT PROBE
#
# BEGIN GDML/XERCESC PROBE
#
# Set default build option to no
echo " "
case "$g4lib_build_gdml" in
'')
g4lib_build_gdml=n
;;
esac
# Now query the user to see if they want to build the GDML plugin
echo ""
g4message=`cat << EOM
G4LIB_BUILD_GDML
Setting this variable will enable building of the GDML plugin module embedded
in Geant4 for detector description persistency.
It requires your system to have the XercesC library and headers installed.
Do you want to set this variable?
EOM`
#
# read in the users response
#
dflt=$g4lib_build_gdml
rp=$g4message
. ./myread
gans=$ans
#
# Check response
#
case $gans in
n*|N*)
g4lib_build_gdml=n
;;
y*|Y*)
g4lib_build_gdml=y
;;
esac
#
# If user does want to build GDML plugin, now try to locate Xerces install
#
if test "X$g4lib_build_gdml" != "Xn"; then
if test "X$g4gdml_xercesc_root" = "X"; then
#probe for Xerces, using example from UI and Vis
xercesc_root=`find $g4gdml_xercesc_root /usr/include /usr/local/include \
/opt/local/include /sw/include -type d -name xercesc 2>/dev/null | xargs echo`
#If we got something, strip off the include/xerces part
if test "X$xercesc_root" != "X"; then
g4gdml_xercesc_root=`dirname $xercesc_root`
g4gdml_xercesc_root=`dirname $g4gdml_xercesc_root`
echo " "
echo "checking for XercesC install... $g4gdml_xercesc_root"
else
g4gdml_xercesc_root=""
echo " "
echo "checking for XercesC install... no"
fi
fi #END OF XERCES AUTOPROBE
#
# If the autoprobe failed, prompt the user to enter the path to the Xerces
# install
#
if test "X$g4gdml_xercesc_root" = "X"; then
promptend="no"
xercesloc="the standard locations"
while test "$promptend" = "no"; do
g4message=`cat << EOM
Autodetection failed to locate XercesC in $xercesloc on your system.
Please enter the path to your XercesC install (i.e. if XercesC is installed
in PATH/include/xercesc, enter PATH), or type '-' to CANCEL the build of the
GDML module.
XercesC path:
EOM`
dflt=$g4gdml_xercesc_root
fn='d~(-)'
rp=$g4message
. ./getfile
#check for user cancellation
if test "X$ans" = "X-"; then
g4lib_build_gdml=n
g4gdml_xercesc_root=""
echo "G4LIB_BUILD_GDML cancelled..."
promptend=yes
else
if test -r "$ans/include/xercesc"; then
g4gdml_xercesc_root=$ans
echo "checking for XercesC install... $g4gdml_xercesc_root"
promptend=yes
else
xercesloc=$ans
echo "checking for Xercesc install... no"
fi
fi #END OF USER INPUT CHECKING
done #END OF WHILE LOOP OVER USER INPUT
fi #END OF USER INPUT SECTION
#
# If a filter on g4gdml_xerces_root is needed to remove common system paths
# then it should be put here...
#
if test "x$g4gdml_xercesc_root" = "x/usr" -o "x$g4gdml_xercesc_root" = "x/usr/local" ; then
g4gdml_xercesc_root=""
fi
fi #END XERCES PROBE
#END OF GDML/XERCES PROBE
echo " "
case "$g4make" in
'')
g4make=gmake
;;
esac
echo ""
g4_gmake_version=`(gmake -v) 2>/dev/null`
case $g4_gmake_version in
GNU*)
g4_gmake=y
;;
*)
g4_gmake=n
;;
esac
g4_make_version=`(make -v) 2>/dev/null`
case $g4_make_version in
GNU*)
g4_make=y
;;
*)
g4_make=n
;;
esac
if [ $g4_gmake = y ] ; then
g4make=gmake
g4message=`cat << EOM
G4MAKE
You have GNU make which could be used to build GEANT4.
You can select your own 'make' program if you want.
EOM`
fi
if [ $g4_gmake = n ] && [ $g4_make = y ] ; then
g4make=make
g4message=`cat << EOM
G4MAKE
You have GNU make which could be used to build GEANT4.
You can select your own 'make' program if you want.
EOM`
fi
if [ $g4_gmake = n ] && [ $g4_make = n ] ; then
g4make=none
g4message=`cat << EOM
G4MAKE
You have NO GNU make which could be used to build GEANT4.
Please select your own 'make' program compatible with GNU make.
EOM`
dflt=$g4make
rp=$g4message
. ./myread
gans=$ans
case $gans in
'')
g4make=$dflt
;;
*)
g4make=$gans
;;
esac
fi
echo " "
case "$g4wlib_build_g3tog4" in
'')
@@ -5813,6 +6403,8 @@ g4_gmake='$g4_gmake'
g4_gmake_version='$g4_gmake_version'
g4_make='$g4_make'
g4_make_version='$g4_make_version'
g4_qthome='$g4_qthome'
g4abladata='$g4abladata'
g4base='$g4base'
g4bin='$g4bin'
g4clhep_base_dir='$g4clhep_base_dir'
@@ -5825,6 +6417,7 @@ g4data='$g4data'
g4debug='$g4debug'
g4elasticdata='$g4elasticdata'
g4final_install='$g4final_install'
g4gdml_xercesc_root='$g4gdml_xercesc_root'
g4global='$g4global'
g4granular='$g4granular'
g4include='$g4include'
@@ -5833,6 +6426,7 @@ g4install='$g4install'
g4ledata='$g4ledata'
g4levelgammadata='$g4levelgammadata'
g4lib='$g4lib'
g4lib_build_gdml='$g4lib_build_gdml'
g4lib_build_shared='$g4lib_build_shared'
g4lib_build_static='$g4lib_build_static'
g4lib_use_dll='$g4lib_use_dll'
@@ -5847,11 +6441,14 @@ g4radioactivedata='$g4radioactivedata'
g4system='$g4system'
g4tmp='$g4tmp'
g4ui_build_gag_session='$g4ui_build_gag_session'
g4ui_build_qt_session='$g4ui_build_qt_session'
g4ui_build_terminal_session='$g4ui_build_terminal_session'
g4ui_build_win32_session='$g4ui_build_win32_session'
g4ui_build_xaw_session='$g4ui_build_xaw_session'
g4ui_build_xm_session='$g4ui_build_xm_session'
g4ui_none='$g4ui_none'
g4ui_use_gag='$g4ui_use_gag'
g4ui_use_qt='$g4ui_use_qt'
g4ui_use_tcsh='$g4ui_use_tcsh'
g4ui_use_terminal='$g4ui_use_terminal'
g4ui_use_win32='$g4ui_use_win32'
@@ -5865,6 +6462,7 @@ g4vis_build_dawn_driver='$g4vis_build_dawn_driver'
g4vis_build_dawnfile_driver='$g4vis_build_dawnfile_driver'
g4vis_build_oiwin32_driver='$g4vis_build_oiwin32_driver'
g4vis_build_oix_driver='$g4vis_build_oix_driver'
g4vis_build_openglqt_driver='$g4vis_build_openglqt_driver'
g4vis_build_openglwin32_driver='$g4vis_build_openglwin32_driver'
g4vis_build_openglx_driver='$g4vis_build_openglx_driver'
g4vis_build_openglxm_driver='$g4vis_build_openglxm_driver'
@@ -5879,6 +6477,7 @@ g4vis_use_dawn='$g4vis_use_dawn'
g4vis_use_dawnfile='$g4vis_use_dawnfile'
g4vis_use_oiwin32='$g4vis_use_oiwin32'
g4vis_use_oix='$g4vis_use_oix'
g4vis_use_openglqt='$g4vis_use_openglqt'
g4vis_use_openglwin32='$g4vis_use_openglwin32'
g4vis_use_openglx='$g4vis_use_openglx'
g4vis_use_openglxm='$g4vis_use_openglxm'
+74
View File
@@ -0,0 +1,74 @@
Geant4 8.3 - patch-01 Release Notes
-----------------------------------
17 August 2007
List of fixes included in this public patch since the public release 8.3:
o Configuration:
-------------
+ liblist.c: fixed problem affecting recent CygWin installations on
Windows in parsing the buffer for the generation of libname.map.
+ binmake.gmk: defined OUT internal variable specifying the proper
compilation/linking option to Unix or Windows compilers: '-o '
and '/Fe' respectively. Cleared <TAB> characters where not necessary.
+ SUN-CC.gmk: forced -xO2 as optimisation level.
o Geometry:
--------
+ magneticfield:
o Relaxed 'FatalException' to 'Warning' in method
G4MagIntegratorDriver::AccurateAdvance() for case of step zero and
return previous value. This fixes problem observed by ATLAS and CMS
in release 8.3 when using very conservative values for field
parameters.
+ solids/specific:
o Fixes in G4Polyhedra::GetPointOnSurface():
Correctly treat 'totalPhi' instead of 'endPhi' for the case of open
shapes and 'twopi' for not open shapes.
Introduced fix for the case when number of sectors (numSide) is equal
to 1. At the origin of problems observed when checking overlaps for
polyhedra solids defined as such.
o Global:
------
+ Changed date for patch-01 to release 8.3.
o Materials:
---------
+ G4NistElementBuilder: added protection (Z>=limitNumElements) inside
method BuildElement().
o Hadronic Processes:
------------------
+ models/chiral_inv_phase_space:
o G4QuasiFreeRatios: fixed DB filling (ID update), responsible for
excessive growth of memory in long runs. Corrected indexing and
computation of cos(theta).
+ util:
o Three bug fixes in G4ReactionDynamics::TwoCluster(): removed a sharp
peak at 180 degrees by fixing a units error and fixed an error in
sampling the momentum transfer. Fixed array bound violation which
caused in some rare occasions an infinite loop.
o Physics Lists:
-------------
+ Correct use of QElasticPhysics in QGSP_QEL list.
----------------------------------------------------------------------------
Technical Notes
---------------
o This patch should be applied on top of release 8.3
o Technical notes distributed for release 8.3 are also applicable and
valid for this patch.
The code and rebuilt binary libraries for release 8.3 are available
through our "Archive of Previous Releases" Web page:
http://cern.ch/geant4/support/source_archive.shtml
Please refer to the Geant4 User Documentation:
http://cern.ch/geant4/support/userdocuments.shtml
for further information about using Geant4.
+187
View File
@@ -0,0 +1,187 @@
Geant4 9.0 - patch-01 Release Notes
-----------------------------------
28 August 2007
List of fixes included in this public patch since the public release 9.0:
o Configuration: (*)
-------------
+ liblist.c: fixed problem affecting recent CygWin installations on
Windows in parsing the buffer for the generation of libname.map.
+ binmake.gmk: defined OUT internal variable specifying the proper
compilation/linking option to Unix or Windows compilers: '-o '
and '/Fe' respectively. Cleared <TAB> characters where not necessary.
+ SUN-CC.gmk: forced -xO2 as optimisation level.
o Geometry:
--------
+ magneticfield:
o Fix to DistChord() method for Helical Steppers: adopt 'special' case
also for Ang<2pi not only for Ang<pi; use cos() in place of tan(), to
improve CPU performance.
o In G4HelixMixedStepper added possibility to call different steppers
for small steps and add some statistics how offen different steppers
are called. Improved AdvanceHelix() to be able to make half step and
full step in one call.
o G4RKG3_Stepper: improved internal algorithm to use pre-computed values;
the stepper now gives comparable CPU performance as ClassicalRK4.
o Changed FatalException to EventMustBeAborted in AccurateAdvance()
if proposed integration step is negative. (*)
+ management:
o Added dummy constructor and destructor to G4VPVParameterisation.
+ solids/BREPS:
o Added missing initialisations of kCarTolerance in alternative
constructors for G4BoundingBox3D, G4Curve, G4CurveRayIntersection,
G4KnotVector. Addressing problem report #959.
+ solids/CSG:
o G4Tubs: fixed bug in DistanceToOut(p,v,..) for negative value under
sqrt() for the case of point p on the surface and v tangent to the
surface. Responsible for rare cases of NaN.
+ solids/specific:
o Fixes in G4Polyhedra::GetPointOnSurface(): (*)
Correctly treat 'totalPhi' instead of 'endPhi' for the case of open
shapes and 'twopi' for not open shapes.
Introduced fix for the case when number of sectors (numSide) is equal
to 1. At the origin of problems observed when checking overlaps for
polyhedra solids defined as such.
o Fixed dummy constructors of G4Polycone and G4PolyPhiFace for
initialisation of 'edges' and 'corners'. Added workaround to
initialisation of 'corners' vector in G4PolyconeSide class, to allow
for object persistency with Root-I/O.
o G4EllipticalCone:
- DistanceToIn(p): corrected answer for p.z()<-zTopCut and for the
point p on the surface.
- DistanceToOut(p,v): now returning positive solution or zero when
crossing the elliptical surface.
- Fix in DistanceToOut(p) which was giving always zero.
- Added some formulas on how to pre-calculate 'SemiAxis' and 'zheight'.
o Global:
------
+ Changed date for patch-01 to release 9.0.
o Graphics Representations:
------------------------
+ Corrected graphical description for G4EllipticalCone in HepPolyhedron
and G4Polyhedron.
+ G4VGraphicsScene: Added default constructor and virtual destructor.
o Intercoms:
---------
+ G4UIbatch:
o Bug fixed for the treatment of the last line.
o Added support for continued line by '\', '_'.
o String after '#' is treated as comment.
o White spaces at the head of a line are allowed.
o Fixed problem on 32bit-Linux.
+ G4UImanager: fixed bug concerning invalid returned object.
+ Introduced "/control/getEnv" and "/control/echo" commands.
o Electromagnetic Processes:
-------------------------
+ Polarisation:
o Removed/renamed obsolete methods and local variables in
classes G4VPolarizedCrossSection, G4eplusPolarizedAnnihilation,
and G4PolarizedAnnihilationModel to clear "shadow" warnings on SUN-CC.
+ Standard:
o G4UniversalFluctuation: added protection such that no sampling of
fluctuations is done if mean energy loss at the step is below minimal
excitation energy of the media. The fix is important for cases of
low-dense gases and very small steps.
+ Utils:
o G4VEmModel: fixed SelectRandomAtom() method for the selection of
elements in a compound material.
+ Xrays:
o G4VXTRenergyLoss: fixed Valgrind run-time errors for wrong memory
allocation by removing internal initialisation of Sandia table and
using Sandia table from materials.
o Hadronic Processes:
------------------
+ models/chiral_inv_phase_space: (*)
o G4QuasiFreeRatios: fixed DB filling (ID update), responsible for
excessive growth of memory in long runs. Corrected indexing and
computation of cos(theta).
+ models/neutron_hp:
o G4NeutronHPThermalScattering: removed duplicate declaration of
'dirName', already a class member, to clear compilation warning.
+ models/util:
o G4KineticTrack: changed local variable names to clear compilation
warnings on SUN-CC about hiding.
+ stopping:
o Fixed signature of G4MuMinusCaptureCascade::DoCascade() expecting
'const' as arguments for A and Z. Resolves linking problems on SUN-CC.
o Visualization:
-------------
+ Removed redundant method declarations and minor tidies.
o Environments:
------------
+ Minor bug fixes to G4Py module; updated geometry wrappers and TestEm0
example.
o Examples:
--------
+ advanced/medical_linac:
o Fixed problem report #880 in DetectorConstruction class.
o Updated macros; reviewed seed initialisation and modified to use
default multiple-scattering class instead of MultipleScattering52.
+ advanced/microbeam:
o Improved dose calculation in the code in order to take into account
small energy deposits by any particle around the phantom edge voxels,
by suppressing a selection condition on the PostStep. The total result
of the dose calculation does not change significantly.
o Added protection against scattering at large angles in collimators.
o Suppressed field manager in zones with zero field.
o Use 'kUndefined' optimization in cell phantom implementation.
o Changed number of incident alpha particles in microbeam.mac.
+ advanced/underground_physics:
o Added missing header file G4hIonisation.hh to DMXPhysicsLists
translation unit.
o Added G4StepLimiter to physics list as correction of migration
required since Geant4 release 7.0.
+ extended/electromagnetic/TestEm7:
o Updated README for physics-list names.
+ extended/electromagnetic/TestEm8:
o Fixed PAI physics constructors: energy loss processes should be
active post step.
o Create VisManager only for interactive session, improved destructor
of Em8DetectorConstruction class.
+ extended/electromagnetic/TestEm10:
o Create VisManager only for interactive session, improved destructor
of Em10DetectorConstruction class.
+ extended/electromagnetic/TestEm13:
+ extended/electromagnetic/TestEm14:
o SteppingAction : modify logic to take into account low energy packages.
+ extended/medical/fanoCavity:
o Use 'fUseDistanceToBoundary' in physics-list for 'emOptions'. Cleanup.
+ extended/medical/GammaTherapy:
o Provide possibility to change cuts between runs.
+ extended/radioactivedecay/exrdm:
o Removed obsolete hadronic builders and use only QGSP_BIC,
QGSP_BIC_HP, QGSP_BERT, QGSP_BERT_HP instead.
+ novice/N02:
o Fixed implementation of ExN02MagneticField class in way field is set.
(*) Fixes also included in the patched release 8.3.p01.
----------------------------------------------------------------------------
Technical Notes
---------------
o This patch should be applied on top of release 9.0
o Technical notes distributed for release 9.0 are also applicable and
valid for this patch.
The code and rebuilt binary libraries for release 9.0 are available
through our "Download" Web page:
http://cern.ch/geant4/support/download.shtml
Please refer to the Geant4 User Documentation:
http://cern.ch/geant4/support/userdocuments.shtml
for further information about using Geant4.
File diff suppressed because it is too large Load Diff
+13 -1
View File
@@ -1,4 +1,4 @@
# $Id: G4UI_BUILD.gmk,v 1.4 2003/10/17 10:17:10 gbarrand Exp $
# $Id: G4UI_BUILD.gmk,v 1.5 2007/10/03 12:15:05 lgarnier Exp $
# -------------------------------------------------------------
# Interfaces-specific CPPFLAGS for BUILD phase.
# John Allison, 6th July 1998.
@@ -22,6 +22,14 @@ ifdef G4UI_BUILD_XM_SESSION
CPPFLAGS += -DG4UI_BUILD_XM_SESSION
endif
ifdef G4UI_BUILD_QT_SESSION
G4UI_BUILD = 1
G4UI_BUILD_BASIC_SESSION = 1
G4INTY_BUILD_QT = 1
INC_QT = 1
CPPFLAGS += -DG4UI_BUILD_QT_SESSION
endif
ifdef G4UI_BUILD_XAW_SESSION
G4UI_BUILD = 1
G4UI_BUILD_BASIC_SESSION = 1
@@ -47,6 +55,10 @@ ifdef G4LIB_BUILD_SHARED
G4UI_USE_XM = 1
endif
ifdef G4UI_BUILD_QT_SESSION
G4UI_USE_QT = 1
endif
ifdef G4UI_BUILD_XAW_SESSION
G4UI_USE_XAW = 1
endif
+9 -1
View File
@@ -1,4 +1,4 @@
# $Id: G4UI_USE.gmk,v 1.8 2003/10/17 10:17:10 gbarrand Exp $
# $Id: G4UI_USE.gmk,v 1.9 2007/10/03 12:15:05 lgarnier Exp $
# -------------------------------------------------------------
# GNUmakefile for CPPFLAGS for interfaces USE phase.
# John Allison, 6th July 1998.
@@ -58,6 +58,14 @@ ifdef G4UI_USE_XM
CPPFLAGS += -DG4UI_USE_XM
endif
ifdef G4UI_USE_QT
G4UI_USE = 1
G4INTY_USE_QT = 1
INC_QT = 1
LOAD_QT = 1
CPPFLAGS += -DG4UI_USE_QT
endif
ifdef G4UI_USE_XAW
G4UI_USE = 1
G4INTY_USE_XT = 1
+20 -1
View File
@@ -1,4 +1,4 @@
# $Id: G4VIS_BUILD.gmk,v 1.19 2005/10/05 17:35:40 allison Exp $
# $Id: G4VIS_BUILD.gmk,v 1.20 2007/10/03 12:15:05 lgarnier Exp $
# -------------------------------------------------------------
# Visualization-specific CPPFLAGS for BUILD phase.
# John Allison, 24th January 1998.
@@ -29,6 +29,12 @@ ifdef G4VIS_BUILD_OPENGLXM_DRIVER
INC_XM = 1
CPPFLAGS += -DG4VIS_BUILD_OPENGLXM_DRIVER
endif
ifdef G4VIS_BUILD_OPENGLQT_DRIVER
G4VIS_BUILD_OPENGL_DRIVER = 1
G4INTY_BUILD_QT = 1
INC_QT = 1
CPPFLAGS += -DG4VIS_BUILD_OPENGLQT_DRIVER
endif
ifdef G4VIS_BUILD_OPENGLX_DRIVER
G4VIS_BUILD_OPENGL_DRIVER = 1
INC_X11 = 1
@@ -49,6 +55,11 @@ ifdef G4VIS_BUILD_OIX_DRIVER
G4INTY_BUILD_XT = 1
CPPFLAGS += -DG4VIS_BUILD_OIX_DRIVER
endif
ifdef G4VIS_BUILD_OIQT_DRIVER
G4VIS_BUILD_OI_DRIVER = 1
G4INTY_BUILDQT = 1
CPPFLAGS += -DG4VIS_BUILD_OIQT_DRIVER
endif
ifdef G4VIS_BUILD_OIWIN32_DRIVER
G4VIS_BUILD_OI_DRIVER = 1
G4INTY_BUILD_WIN32 = 1
@@ -86,6 +97,10 @@ ifdef G4LIB_BUILD_SHARED
G4VIS_USE_OPENGLXM = 1
endif
ifdef G4VIS_BUILD_OPENGLQT_DRIVER
G4VIS_USE_OPENGLQT = 1
endif
ifdef G4VIS_BUILD_OPENGL_DRIVER
G4VIS_USE_OPENGL = 1
endif
@@ -94,6 +109,10 @@ ifdef G4LIB_BUILD_SHARED
G4VIS_USE_OIX = 1
endif
ifdef G4VIS_BUILD_OIQT_DRIVER
G4VIS_USE_OIQT = 1
endif
ifdef G4VIS_BUILD_OIWIN32_DRIVER
G4VIS_USE_OIWIN32 = 1
endif
+12 -1
View File
@@ -1,4 +1,4 @@
# $Id: G4VIS_USE.gmk,v 1.22 2005/10/05 17:35:40 allison Exp $
# $Id: G4VIS_USE.gmk,v 1.23 2007/10/03 12:15:05 lgarnier Exp $
# -------------------------------------------------------------
# GNUmakefile for CPPFLAGS for visualization USE phase.
# John Allison, 24th January 1998.
@@ -56,6 +56,11 @@ ifdef G4VIS_USE_OPENGLXM
INC_XM = 1
LOAD_XM = 1
endif
ifdef G4VIS_USE_OPENGLQT
G4VIS_USE_OPENGL = 1
CPPFLAGS += -DG4VIS_USE_OPENGLQT
INC_QT = 1
endif
ifdef G4VIS_USE_OPENGLWIN32
G4VIS_USE_OPENGL = 1
CPPFLAGS += -DG4VIS_USE_OPENGLWIN32
@@ -76,6 +81,12 @@ ifdef G4VIS_USE_OIX
INC_XM = 1
LOAD_XM = 1
endif
ifdef G4VIS_USE_OIQT
G4VIS_USE_OI = 1
CPPFLAGS += -DG4VIS_USE_OIQT
INC_QT = 1
LOAD_QT = 1
endif
ifdef G4VIS_USE_OIWIN32
G4VIS_USE_OI = 1
CPPFLAGS += -DG4VIS_USE_OIWIN32
+56 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.295 2007/06/28 17:01:13 gcosmo Exp $
$Id: History,v 1.310 2007/12/11 13:20:28 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -16,6 +16,61 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
11th December 2007 Gabriele Cosmo (config-V09-00-12)
- Corrected setup for GDML on WIN32-VC to allow for building DLLs.
30th November 2007 Ben Morgan (config-V09-00-11)
- Updated Configure script to handle Qt UI build.
- Updated internal scripts for Configure accordingly.
22nd November 2007 Gabriele Cosmo (config-V09-00-10)
- Corrected addition of lXercesC and Zlib libraries in binmake.gmk.
- Added special case for WIN32-VC for names of XercesC libraries in architecture.gmk.
- Use 'gfortran' instead of 'g77' in Darwing-g++.gmk script. (I.McLaren)
19th November 2007 Gabriele Cosmo (config-V09-00-09)
- Added "qmd" hadronic model to binmake.gmk.
16th November 2007 Laurent Garnier (config-V09-00-08)
- Updated setup for Qt in Linux-g++.gmk and Darwin-g++.gmk scripts to
support both Qt3 and Qt4.
15th November 2007 Ben Morgan (config-V09-00-07)
- Updated Configure script to handle new 'gdml' sub-module and new data
libraries (G4ABLADATA and new G4EMLOW version).
- Updated internal scripts for Configure accordingly.
2nd November 2007 Gabriele Cosmo (config-V09-00-06)
- Introduced G4LIB_BUILD_GDML/G4LIB_USE_GDML flags to trigger compilation
of the new persistency/gdml sub-module. Added setup for XERCESC.
Required path XERCESCROOT to XERCESC installation if G4LIB_BUILD_GDML
is set. Added "persistency/gdml" include path to binmake.gmk
- Added setup for QT in UI scripts, and specific QT paths and setup in
Darwin-g++.gmk. (L.Garnier)
10th October 2007 Gunter Folger (config-V09-00-05)
- Added "incl" (Liege cascade) hadronic model module to binmake.gmk.
16th August 2007 Gabriele Cosmo (config-V09-00-04)
- Corrected definition of OUT internal variable to allow for proper
linking also of unit tests.
15th August 2007 Gabriele Cosmo (config-V09-00-03)
- Added "rpg" hadronic model module to binmake.gmk.
13th August 2007 Gabriele Cosmo (config-V09-00-02)
- SUN-CC.gmk: forced -xO2 as optimisation level.
18th July 2007 Gabriele Cosmo (config-V09-00-01)
- liblist.c: fixed problem affecting recent CygWin installations on
Windows in parsing the buffer for the generation of libname.map.
- binmake.gmk: defined OUT internal variable specifying the proper
compilation/linking option to Unix or Windows compilers: '-o '
and '/Fe' respectively.
11th July 2007 Makoto Asai (config-V09-00-00)
- Added digits_hits/scorer sub-directory to binmake.gmk.
28th June 2007 Gabriele Cosmo (config-V08-03-04)
- Updated Configure scripts to fix installation issue when installation
path is different from source path and headers are not installed.
+23 -2
View File
@@ -1,4 +1,4 @@
# $Id: architecture.gmk,v 1.110 2007/06/28 14:16:55 gcosmo Exp $
# $Id: architecture.gmk,v 1.114 2007/12/11 13:20:29 gcosmo Exp $
# ------------------------------------------------------------------------
# GEANT 4 - Architecture configuration script for GNU Make
#
@@ -240,7 +240,7 @@ endif
# compiler. OGLHOME can also point to a special installation.
# If the user does not set his/her own values, system-dependent values
# are set below. Most system-dependent code assumes OGLHOME is set.
#
# ------------- OpenInventor -----------------
# The path to the installation of OpenInventor must be specified
# if the package is installed in a location different
@@ -256,6 +256,27 @@ ifndef OIVLIBS
OIVLIBS := -L$(OIVHOME)/lib -lInventorXt -lInventor
endif
# ----------------- GDML ---------------------
# Setup path to XERCESC library if GDML plugin build is specified
#
ifneq ($(G4LIB_BUILD_GDML),)
G4LIB_USE_GDML = 1
ifndef XERCESCROOT
XERCESCROOT := /usr/local/xercesc
endif
ifndef GDMLFLAGS
GDMLFLAGS := -DG4LIB_USE_GDML -I$(XERCESCROOT)/include
endif
ifndef GDMLLIBS
ifneq (,$(findstring WIN32-VC,$(G4SYSTEM)))
GDMLLIBS := $(LIB_PATH)$(XERCESCROOT)/lib xerces-depdom_2.lib xerces-c_2.lib
else
GDMLLIBS := -L$(XERCESCROOT)/lib -lxerces-depdom -lxerces-c
endif
endif
CPPFLAGS += $(GDMLFLAGS)
endif
# For cfront compilers the repository location is set to
# $G4TMP/$G4SYSTEM/g4.ptrepository.
#
+17 -6
View File
@@ -1,4 +1,4 @@
# $Id: binmake.gmk,v 1.123 2007/06/28 14:16:55 gcosmo Exp $
# $Id: binmake.gmk,v 1.135 2007/11/22 14:08:10 gcosmo Exp $
# ----------------------------------------------------------
# Script defining rules and paths for making binaries.
# First implementation: Gabriele Cosmo, 25/06/1998.
@@ -51,7 +51,6 @@ ifndef INCFLAGS
-I$(G4BASE)/global/HEPNumerics/include \
-I$(G4BASE)/run/include \
-I$(G4BASE)/materials/include \
-I$(G4BASE)/parameterisations/trd_clusters/include \
-I$(G4BASE)/parameterisations/gflash/include \
-I$(G4BASE)/particles/management/include \
-I$(G4BASE)/particles/bosons/include \
@@ -101,6 +100,7 @@ ifndef INCFLAGS
-I$(G4BASE)/processes/hadronic/models/general_finalstate/include \
-I$(G4BASE)/processes/hadronic/models/high_energy/include \
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
-I$(G4BASE)/processes/hadronic/models/incl/include \
-I$(G4BASE)/processes/hadronic/models/inucl/include \
-I$(G4BASE)/processes/hadronic/models/isotope_production/include \
-I$(G4BASE)/processes/hadronic/models/leading_particle/include \
@@ -114,11 +114,13 @@ ifndef INCFLAGS
-I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
-I$(G4BASE)/processes/hadronic/models/qmd/include \
-I$(G4BASE)/processes/hadronic/models/quark_molecular_dynamics/body/include \
-I$(G4BASE)/processes/hadronic/models/quark_molecular_dynamics/util/include \
-I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
-I$(G4BASE)/processes/hadronic/models/relativistic_qmd/include \
-I$(G4BASE)/processes/hadronic/models/relativistic_qmd/uplusplus/include \
-I$(G4BASE)/processes/hadronic/models/rpg/include \
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
-I$(G4BASE)/processes/hadronic/models/util/include \
-I$(G4BASE)/processes/hadronic/processes/include \
@@ -139,8 +141,10 @@ ifndef INCFLAGS
-I$(G4BASE)/digits_hits/detector/include \
-I$(G4BASE)/digits_hits/hits/include \
-I$(G4BASE)/digits_hits/digits/include \
-I$(G4BASE)/digits_hits/scorer/include \
-I$(G4BASE)/digits_hits/utils/include \
-I$(G4BASE)/persistency/include \
-I$(G4BASE)/persistency/gdml/include \
-I$(G4BASE)/persistency/mctruth/include \
-I$(G4BASE)/readout/include \
-I$(G4BASE)/event/include \
-I$(G4BASE)/error_propagation/include \
@@ -251,12 +255,15 @@ else
endif
endif
ifdef G4LIB_BUILD_ZLIB
ifdef G4LIB_USE_ZLIB
LDLIBS2 += -lG4zlib
endif
# LDLIBS3 contains the first set of low level libraries...
#
ifdef G4LIB_USE_GDML
LDLIBS3 += $(GDMLLIBS)
endif
LDLIBS3 += $(INTYLIBS)
LDLIBS3 += $(ANALYSISLIBS)
@@ -282,6 +289,7 @@ LDLIBS_PREFINAL += $(LDLIBS4)
LDLIBS_KERNEL += $(LDLIBS4)
ifneq (,$(findstring WIN32-VC,$(G4SYSTEM)))
# Windows
WIN32TMP := $(patsubst -L%,$(LIB_PATH)%,$(LDFLAGS))
LDFLAGS = $(patsubst /,$(PATH_DEL),$(WIN32TMP))
WIN32TMP2 := $(patsubst -L%,$(LIB_PATH)%,$(LDLIBS_PREFINAL))
@@ -296,8 +304,11 @@ ifneq (,$(findstring WIN32-VC,$(G4SYSTEM)))
else
LDLIBS = $(TARGETLIB) $(patsubst -l%,lib%.a,$(WIN32TMP2))
endif
OUT := /Fe
else
# Unix
LDLIBS = $(TARGETLIB) $(LDLIBS_PREFINAL)
OUT := -o
endif
ifdef transform-RPath
@@ -339,12 +350,12 @@ endif
@if [ ! -d $(G4BINDIR) ] ; then mkdir $(G4BINDIR) ;fi
ifdef CPPVERBOSE
$(CXX) $(CXXFLAGS) $(CPPFLAGS) \
-o $(G4BINDIR)/$(G4TARGET) $(objects) $(LDFLAGS) \
$(OUT)$(G4BINDIR)/$(G4TARGET) $(objects) $(LDFLAGS) \
$(LDLIBS)
else
@echo Linking $(G4TARGET) ...
@$(CXX) $(CXXFLAGS) $(CPPFLAGS) \
-o $(G4BINDIR)/$(G4TARGET) $(objects) $(LDFLAGS) \
$(OUT)$(G4BINDIR)/$(G4TARGET) $(objects) $(LDFLAGS) \
$(LDLIBS)
@if [ \( -f $(G4BINDIR)/$(G4TARGET) \) ]; then \
echo "... Done!"; fi
+17
View File
@@ -62,16 +62,33 @@ ifdef LOAD_X11
INTYLIBS += $(X11LIBS)
endif
########################### Qt ###################
ifdef INC_QT
CPPFLAGS += $(QTFLAGS)
endif
ifdef LOAD_QT
INTYLIBS += $(QTLIBS)
endif
########################### and finally... #######################
ifdef G4INTY_BUILD_XT
CPPFLAGS += -DG4INTY_BUILD_XT
endif
ifdef G4INTY_BUILD_QT
CPPFLAGS += -DG4INTY_BUILD_QT
endif
ifdef G4INTY_USE_XT
CPPFLAGS += -DG4INTY_USE_XT
endif
ifdef G4INTY_USE_QT
CPPFLAGS += -DG4INTY_USE_QT
endif
ifdef G4INTY_BUILD_WIN32
CPPFLAGS += -DG4INTY_BUILD_WIN32
endif
+1 -2
View File
@@ -1,4 +1,4 @@
/* $Id: liblist.c,v 1.18 2006/10/05 14:22:06 gcosmo Exp $ */
/* $Id: liblist.c,v 1.19 2007/07/18 14:21:15 gcosmo Exp $ */
/*
Given a "libname.map" file on standard input and a list or directory
@@ -303,7 +303,6 @@ int main (int argc, char** argv) {
#if defined ( _WIN32 ) || defined ( __CYGWIN__ ) || defined ( __CYGWIN32__ )
ptr=strchr(ntg4tmp1,':');
if ( ptr ) *(ptr+1)='\0';
while ( ptr=strchr(buffer,'\\') ) *ptr='/';
+86
View File
@@ -39,12 +39,14 @@ unsetenv G4LEDATA
unsetenv G4LEVELGAMMADATA
unsetenv G4NEUTRONHPDATA
unsetenv G4RADIOACTIVEDATA
unsetenv G4ABLADATA
unsetenv G4LIB
unsetenv G4LIB_BUILD_G3TOG4
unsetenv G4LIB_BUILD_SHARED
unsetenv G4LIB_BUILD_STATIC
unsetenv G4LIB_BUILD_ZLIB
unsetenv G4LIB_BUILD_GDML
unsetenv G4LIB_USE_G3TOG4
unsetenv G4LIB_USE_GRANULAR
unsetenv G4LIB_USE_ZLIB
@@ -58,6 +60,7 @@ unsetenv G4UI_USE_TCSH
unsetenv G4UI_USE_WIN32
unsetenv G4UI_USE_XAW
unsetenv G4UI_USE_XM
unsetenv G4UI_USE_QT
unsetenv G4VIS_BUILD_DAWN_DRIVER
unsetenv G4VIS_BUILD_OIWIN32_DRIVER
@@ -67,6 +70,7 @@ unsetenv G4VIS_BUILD_OPENGLXM_DRIVER
unsetenv G4VIS_BUILD_OPENGLX_DRIVER
unsetenv G4VIS_BUILD_RAYTRACERX_DRIVER
unsetenv G4VIS_BUILD_VRML_DRIVER
unsetenv G4VIS_BUILD_OPENGLQT_DRIVER
unsetenv G4VIS_USE_DAWN
unsetenv G4VIS_USE_OIWIN32
@@ -76,6 +80,7 @@ unsetenv G4VIS_USE_OPENGLX
unsetenv G4VIS_USE_OPENGLXM
unsetenv G4VIS_USE_RAYTRACERX
unsetenv G4VIS_USE_VRML
unsetenv G4VIS_USE_OPENGLQT
######################################
#
@@ -144,6 +149,13 @@ setenv G4NEUTRONHPDATA "$g4neutronhpcrosssections"
echo "On this machine the G4NEUTRONHPDATA=\$G4NEUTRONHPDATA"
endif
#+
if ( X$g4abladata != X ) then
setenv G4ABLADATA "$g4abladata"
echo "On this machine the G4ABLADATA=\$G4ABLADATA"
endif
#+
#if ( X$g4elasticdata != X ) then
#setenv G4ELASTICDATA "$g4elasticdata"
@@ -233,6 +245,20 @@ setenv G4UI_USE_WIN32 1
echo "On this machine the G4UI_USE_WIN32=\$G4UI_USE_WIN32"
endif
#+
if ( X$g4ui_build_qt_session == Xy ) then
setenv G4UI_BUILD_QT_SESSION 1
echo "On this machine the G4UI_BUILD_QT_SESSION=\$G4UI_BUILD_QT_SESSION"
endif
#+
if ( X$g4ui_use_qt == Xy ) then
setenv G4UI_USE_QT 1
echo "On this machine the G4UI_USE_QT=\$G4UI_USE_QT"
endif
#
# g4vis
#
@@ -284,6 +310,13 @@ setenv G4VIS_BUILD_VRML_DRIVER 1
echo "On this machine the G4VIS_BUILD_VRML_DRIVER=\$G4VIS_BUILD_VRML_DRIVER"
endif
#+
if ( X$g4vis_build_openglqt_driver == Xy ) then
setenv G4VIS_BUILD_OPENGLQT_DRIVER 1
echo "On this machine the G4VIS_BUILD_OPENGLQT_DRIVER=\$G4VIS_BUILD_OPENGLQT_DRIVER"
endif
#+
if ( X$g4vis_use_dawn == Xy ) then
setenv G4VIS_USE_DAWN 1
@@ -332,6 +365,12 @@ setenv G4VIS_USE_VRML 1
echo "On this machine the G4VIS_USE_VRML=\$G4VIS_USE_VRML"
endif
#+
if ( X$g4vis_use_openglqt == Xy ) then
setenv G4VIS_USE_OPENGLQT 1
echo "On this machine the G4VIS_USE_OPENGLQT=\$G4VIS_USE_OPENGLQT"
endif
#+
if ( X$g4vis_oglhome != X ) then
setenv OGLHOME "$g4vis_oglhome"
@@ -344,6 +383,14 @@ setenv OIVHOME "$g4vis_oivhome"
echo "On this machine the OIVHOME=\$OIVHOME"
endif
#+
if ( X$g4_qthome != X ) then
setenv QTHOME "$g4_qthome"
echo "On this machine the QTHOME=\$QTHOME"
endif
#+
if ( X$g4vis_build_openglxm_driver != X ) then
setenv XMFLAGS "$g4vis_xmflags"
@@ -380,6 +427,25 @@ setenv XAWLIBS "$g4ui_xawlibs"
echo "On this machine the XAWLIBS=\$XAWLIBS"
endif
#
# Use GDML module
#
#+
if ( X$g4lib_build_gdml == Xy ) then
setenv G4LIB_BUILD_GDML 1
echo "On this machine the G4LIB_BUILD_GDML=\$G4LIB_BUILD_GDML"
endif
if ( X$g4lib_build_gdml == Xy ) then
setenv XERCESCROOT "$g4gdml_xercesc_root"
echo "On this machine the XERCESCROOT=\$XERCESCROOT"
endif
#
# Use G3TOG4 module
#
@@ -488,9 +554,19 @@ echo ''
if ( ${?LD_LIBRARY_PATH} ) then
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${G4LIB}/${G4SYSTEM}
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if ( ${?G4LIB_BUILD_GDML} ) then
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${XERCESCROOT}/lib
endif
else
setenv LD_LIBRARY_PATH ${G4LIB}/${G4SYSTEM}
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if ( ${?G4LIB_BUILD_GDML} ) then
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${XERCESCROOT}/lib
endif
endif
endif
@@ -503,9 +579,19 @@ if ( ${?G4LIB_BUILD_SHARED} ) then
if ( ${?DYLD_LIBRARY_PATH} ) then
setenv DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH}:${G4LIB}/${G4SYSTEM}
setenv DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if ( ${?G4LIB_BUILD_GDML} ) then
setenv DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH}:${XERCESCROOT}/lib
endif
else
setenv DYLD_LIBRARY_PATH ${G4LIB}/${G4SYSTEM}
setenv DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if ( ${?G4LIB_BUILD_GDML} ) then
setenv DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH}:${XERCESCROOT}/lib
endif
endif
endif
+109
View File
@@ -39,12 +39,14 @@ unset G4LEDATA
unset G4LEVELGAMMADATA
unset G4NEUTRONHPDATA
unset G4RADIOACTIVEDATA
unset G4ABLADATA
unset G4LIB
unset G4LIB_BUILD_G3TOG4
unset G4LIB_BUILD_SHARED
unset G4LIB_BUILD_STATIC
unset G4LIB_BUILD_ZLIB
unset G4LIB_BUILD_GDML
unset G4LIB_USE_G3TOG4
unset G4LIB_USE_GRANULAR
unset G4LIB_USE_ZLIB
@@ -58,6 +60,7 @@ unset G4UI_USE_TCSH
unset G4UI_USE_WIN32
unset G4UI_USE_XAW
unset G4UI_USE_XM
unset G4UI_USE_QT
unset G4VIS_BUILD_DAWN_DRIVER
unset G4VIS_BUILD_OIWIN32_DRIVER
@@ -67,6 +70,7 @@ unset G4VIS_BUILD_OPENGLXM_DRIVER
unset G4VIS_BUILD_OPENGLX_DRIVER
unset G4VIS_BUILD_RAYTRACERX_DRIVER
unset G4VIS_BUILD_VRML_DRIVER
unset G4VIS_BUILD_OPENGLQT_DRIVER
unset G4VIS_USE_DAWN
unset G4VIS_USE_OIWIN32
@@ -76,6 +80,7 @@ unset G4VIS_USE_OPENGLX
unset G4VIS_USE_OPENGLXM
unset G4VIS_USE_RAYTRACERX
unset G4VIS_USE_VRML
unset G4VIS_USE_OPENGLQT
#
@@ -170,6 +175,18 @@ echo "On this machine the G4NEUTRONHPDATA=\$G4NEUTRONHPDATA"
fi
fi
#+
if [ X$g4abladata != X ] ; then
G4ABLADATA="$g4abladata"
export G4ABLADATA
if [ X\$g4non_display = X ] ; then
echo "On this machine the G4ABLADATA=\$G4ABLADATA"
fi
fi
#+
#if [ X$g4elasticdata != X ] ; then
#G4ELASTICDATA="$g4elasticdata"
@@ -298,6 +315,27 @@ echo "On this machine the G4UI_USE_WIN32=\$G4UI_USE_WIN32"
fi
fi
#+
if [ X$g4ui_build_qt_session = Xy ] ; then
G4UI_BUILD_QT_SESSION=1
export G4UI_BUILD_QT_SESSION
if [ X\$g4non_display = X ] ; then
echo "On this machine the G4UI_BUILD_QT_SESSION=\$G4UI_BUILD_QT_SESSION"
fi
fi
#+
if [ X$g4ui_use_qt = Xy ] ; then
G4UI_USE_QT=1
export G4UI_USE_QT
if [ X\$g4non_display = X ] ; then
echo "On this machine the G4UI_USE_QT=\$G4UI_USE_QT"
fi
fi
#
# g4vis
#
@@ -373,6 +411,17 @@ echo "On this machine the G4VIS_BUILD_VRML_DRIVER=\$G4VIS_BUILD_VRML_DRIVER"
fi
fi
#+
if [ X$g4vis_build_openglqt_driver = Xy ] ; then
G4VIS_BUILD_OPENGLQT_DRIVER=1
export G4VIS_BUILD_OPENGLQT_DRIVER
if [ X\$g4non_display = X ] ; then
echo "On this machine the G4VIS_BUILD_OPENGLQT_DRIVER=\$G4VIS_BUILD_OPENGLQT_DRIVER"
fi
fi
#+
if [ X$g4vis_use_dawn = Xy ] ; then
G4VIS_USE_DAWN=1
@@ -445,6 +494,17 @@ echo "On this machine the G4VIS_USE_VRML=\$G4VIS_USE_VRML"
fi
fi
#+
if [ X$g4vis_use_openglqt = Xy ] ; then
G4VIS_USE_OPENGLQT=1
export G4VIS_USE_OPENGLQT
if [ X\$g4non_display = X ] ; then
echo "On this machine the G4VIS_USE_OPENGLQT=\$G4VIS_USE_OPENGLQT"
fi
fi
#+
if [ X$g4vis_oglhome != X ] ; then
OGLHOME="$g4vis_oglhome"
@@ -463,6 +523,16 @@ echo "On this machine the OIVHOME=\$OIVHOME"
fi
fi
#+
if [ X$g4_qthome != X ] ; then
QTHOME=$g4_qthome
export QTHOME
if [ X\$g4non_display = X ] ; then
echo "On this machine the QTHOME=\$QTHOME"
fi
fi
#+
if [ X$g4vis_build_openglxm_driver != X ] ; then
XMFLAGS="$g4vis_xmflags"
@@ -517,6 +587,25 @@ echo "On this machine the XAWLIBS=\$XAWLIBS"
fi
fi
#
# Use GDML module
#
#+
if [ X$g4lib_build_gdml = Xy ] ; then
G4LIB_BUILD_GDML=1
export G4LIB_BUILD_GDML
echo "On this machine the G4LIB_BUILD_GDML=\$G4LIB_BUILD_GDML"
fi
if [ X$g4lib_build_gdml = Xy ] ; then
XERCESCROOT=$g4gdml_xercesc_root
export XERCESCROOT
echo "On this machine the XERCESCROOT=\$XERCESCROOT"
fi
#
# Use G3TOG4 module
#
@@ -669,10 +758,20 @@ echo ''
if [ $LD_LIBRARY_PATH ] ; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${G4LIB}/${G4SYSTEM}
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if [ $G4LIB_BUILD_GDML ] ; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${XERCESCROOT}/lib
fi
export LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=${G4LIB}/${G4SYSTEM}
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if [ $G4LIB_BUILD_GDML ] ; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${XERCESCROOT}/lib
fi
export LD_LIBRARY_PATH
fi
fi
@@ -686,10 +785,20 @@ if [ $G4LIB_BUILD_SHARED ] ; then
if [ $DYLD_LIBRARY_PATH ] ; then
DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${G4LIB}/${G4SYSTEM}
DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if [ $G4LIB_BUILD_GDML ] ; then
DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${XERCESCROOT}/lib
fi
export DYLD_LIBRARY_PATH
else
DYLD_LIBRARY_PATH=${G4LIB}/${G4SYSTEM}
DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${CLHEP_BASE_DIR}/lib
if [ $G4LIB_BUILD_GDML ] ; then
DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${XERCESCROOT}/lib
fi
export DYLD_LIBRARY_PATH
fi
fi
+79
View File
@@ -39,12 +39,14 @@ unset G4LEDATA
unset G4LEVELGAMMADATA
unset G4NEUTRONHPDATA
unset G4RADIOACTIVEDATA
unset G4ABLADATA
unset G4LIB
unset G4LIB_BUILD_G3TOG4
unset G4LIB_BUILD_SHARED
unset G4LIB_BUILD_STATIC
unset G4LIB_BUILD_ZLIB
unset G4LIB_BUILD_GDML
unset G4LIB_USE_G3TOG4
unset G4LIB_USE_GRANULAR
unset G4LIB_USE_ZLIB
@@ -54,10 +56,12 @@ unset G4SYSTEM
unset G4UI_BUILD_WIN32_SESSION
unset G4UI_BUILD_XAW_SESSION
unset G4UI_BUILD_XM_SESSION
unset G4UI_BUILD_QT_SESSION
unset G4UI_USE_TCSH
unset G4UI_USE_WIN32
unset G4UI_USE_XAW
unset G4UI_USE_XM
unset G4UI_USE_QT
unset G4VIS_BUILD_DAWN_DRIVER
unset G4VIS_BUILD_OIWIN32_DRIVER
@@ -67,6 +71,7 @@ unset G4VIS_BUILD_OPENGLXM_DRIVER
unset G4VIS_BUILD_OPENGLX_DRIVER
unset G4VIS_BUILD_RAYTRACERX_DRIVER
unset G4VIS_BUILD_VRML_DRIVER
unset G4VIS_BUILD_OPENGLQT_DRIVER
unset G4VIS_USE_DAWN
unset G4VIS_USE_OIWIN32
@@ -76,6 +81,7 @@ unset G4VIS_USE_OPENGLX
unset G4VIS_USE_OPENGLXM
unset G4VIS_USE_RAYTRACERX
unset G4VIS_USE_VRML
unset G4VIS_USE_OPENGLQT
######################################
#
@@ -149,6 +155,16 @@ export G4NEUTRONHPDATA
echo "On this machine the G4NEUTRONHPDATA=\$G4NEUTRONHPDATA"
fi
#+
if [ X$g4abladata != X ] ; then
G4ABLADATA="$g4abladata"
export G4ABLADATA
echo "On this machine the G4ABLADATA=\$G4ABLADATA"
fi
#+
#if [ X$g4elasticdata != X ] ; then
#G4ELASTICDATA="$g4elasticdata"
@@ -257,6 +273,22 @@ export G4UI_USE_WIN32
echo "On this machine the G4UI_USE_WIN32=\$G4UI_USE_WIN32"
fi
#+
if [ X$g4ui_build_qt_session = Xy ] ; then
G4UI_BUILD_QT_SESSION=1
export G4UI_BUILD_QT_SESSION
echo "On this machine the G4UI_BUILD_QT_SESSION=\$G4UI_BUILD_QT_SESSION"
fi
#+
if [ X$g4ui_use_qt = Xy ] ; then
G4UI_USE_QT=1
export G4UI_USE_QT
echo "On this machine the G4UI_USE_QT=\$G4UI_USE_QT"
fi
#
# g4vis
#
@@ -316,6 +348,14 @@ export G4VIS_BUILD_VRML_DRIVER
echo "On this machine the G4VIS_BUILD_VRML_DRIVER=\$G4VIS_BUILD_VRML_DRIVER"
fi
#+
if [ X$g4vis_build_openglqt_driver = Xy ] ; then
G4VIS_BUILD_OPENGLQT_DRIVER=1
export G4VIS_BUILD_OPENGLQT_DRIVER
echo "On this machine the G4VIS_BUILD_OPENGLQT_DRIVER=\$G4VIS_BUILD_OPENGLQT_DRIVER"
fi
#+
if [ X$g4vis_use_dawn = Xy ] ; then
G4VIS_USE_DAWN=1
@@ -372,6 +412,19 @@ export G4VIS_USE_VRML
echo "On this machine the G4VIS_USE_VRML=\$G4VIS_USE_VRML"
fi
#+
if [ X$g4vis_use_openglqt = Xy ] ; then
G4VIS_USE_OPENGLQT=1
export G4VIS_USE_OPENGLQT
echo "On this machine the G4VIS_USE_OPENGLQT=\$G4VIS_USE_OPENGLQT"
fi
#+
if [ X$g4vis_oglhome != X ] ; then
OGLHOME="$g4vis_oglhome"
@@ -388,6 +441,14 @@ echo "On this machine the OIVHOME=\$OIVHOME"
fi
fi
#+
if [ X$g4_qthome != X ] ; then
QTHOME=$g4_qthome
export QTHOME
echo "On this machine the QTHOME=\$QTHOME"
fi
#+
if [ X$g4vis_build_openglxm_driver != X ] ; then
XMFLAGS="$g4vis_xmflags"
@@ -442,6 +503,24 @@ echo "On this machine the XAWLIBS=\$XAWLIBS"
fi
fi
#
# Use GDML module
#
#+
if [ X$g4lib_build_gdml = Xy ] ; then
G4LIB_BUILD_GDML=1
export G4LIB_BUILD_GDML
echo "On this machine the G4LIB_BUILD_GDML=\$G4LIB_BUILD_GDML"
fi
if [ X$g4lib_build_gdml = Xy ] ; then
XERCESCROOT=$g4gdml_xercesc_root
export XERCESCROOT
echo "On this machine the XERCESCROOT=\$XERCESCROOT"
fi
#
# Use G3TOG4 module
#
+71
View File
@@ -94,6 +94,15 @@ export G4NEUTRONHPDATA
echo "On this machine the G4NEUTRONHPDATA=\$G4NEUTRONHPDATA"
fi
#+
if [ X$g4abladata != X ] ; then
G4ABLADATA="$g4abladata"
export G4ABLADATA
echo "On this machine the G4ABLADATA=\$G4ABLADATA"
fi
#+
#if [ X$g4elasticdata != X ] ; then
#G4ELASTICDATA="$g4elasticdata"
@@ -196,6 +205,23 @@ export G4UI_USE_WIN32
echo "On this machine the G4UI_USE_WIN32=\$G4UI_USE_WIN32"
fi
#+
if [ X$g4ui_build_qt_session = Xy ] ; then
G4UI_BUILD_QT_SESSION=1
export G4UI_BUILD_QT_SESSION
echo "On this machine the G4UI_BUILD_QT_SESSION=\$G4UI_BUILD_QT_SESSION"
fi
#+
if [ X$g4ui_use_qt = Xy ] ; then
G4UI_USE_QT=1
export G4UI_USE_QT
echo "On this machine the G4UI_USE_QT=\$G4UI_USE_QT"
fi
#
# g4vis
#
@@ -248,6 +274,15 @@ export G4VIS_BUILD_VRML_DRIVER
echo "On this machine the G4VIS_BUILD_VRML_DRIVER=\$G4VIS_BUILD_VRML_DRIVER"
fi
#+
if [ X$g4vis_build_openglqt_driver = Xy ] ; then
G4VIS_BUILD_OPENGLQT_DRIVER=1
export G4VIS_BUILD_OPENGLQT_DRIVER
echo "On this machine the G4VIS_BUILD_OPENGLQT_DRIVER=\$G4VIS_BUILD_OPENGLQT_DRIVER"
fi
#+
if [ X$g4vis_use_dawn = Xy ] ; then
G4VIS_USE_DAWN=1
@@ -297,6 +332,15 @@ export G4VIS_USE_VRML
echo "On this machine the G4VIS_USE_VRML=\$G4VIS_USE_VRML"
fi
#+
if [ X$g4vis_use_openglqt = Xy ] ; then
G4VIS_USE_OPENGLQT=1
export G4VIS_USE_OPENGLQT
echo "On this machine the G4VIS_USE_OPENGLQT=\$G4VIS_USE_OPENGLQT"
fi
#+
if [ X$g4vis_oglhome != X ] ; then
OGLHOME="$g4vis_oglhome"
@@ -304,6 +348,33 @@ export OGLHOME
echo "On this machine the OGLHOME=\$OGLHOME"
fi
#+
if [ X$g4_qthome != X ] ; then
QTHOME=$g4_qthome
export QTHOME
echo "On this machine the QTHOME=\$QTHOME"
fi
#
# Use GDML module
#
#+
if [ X$g4lib_build_gdml = Xy ] ; then
G4LIB_BUILD_GDML=1
export G4LIB_BUILD_GDML
echo "On this machine the G4LIB_BUILD_GDML=\$G4LIB_BUILD_GDML"
fi
if [ X$g4lib_build_gdml = Xy ] ; then
XERCESCROOT=$g4gdml_xercesc_root
export XERCESCROOT
echo "On this machine the XERCESCROOT=\$XERCESCROOT"
fi
#
# Use G3TOG4 module
#
+14 -1
View File
@@ -27,7 +27,7 @@ ifeq ($(G4SYSTEM),Darwin-g++)
FCFLAGS += -pg
CCFLAGS += -pg
endif
FC := g77
FC := gfortran
FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore
LDFLAGS += -bind_at_load
FCLIBS := -lg2c -lnsl
@@ -46,6 +46,19 @@ ifeq ($(G4SYSTEM),Darwin-g++)
XMLIBS := -L/sw/lib -lXm -lXpm
# XMLIBS := -L/usr/X11R6/lib -lXm -lXpm ##### some installations.
endif
ifndef QTHOME
QTHOME := /sw
endif
ifndef QTFLAGS
QTFLAGS := -I$(QTHOME)/include/Qt -I$(QTHOME)/include
MOC := $(QTHOME)/bin/moc
endif
ifndef QTLIBS
QT3LIBS := -L$(QTHOME)/lib -lqt-mt -lqui
QT4LIBS := -F$(QTHOME)/lib -framework QtCore -framework QtGui
QT4LIBS += -framework QtOpenGL -framework QtSql -framework QtXml
QTLIBS := $(shell test -f $(QTHOME)/lib/Qt3Support.framework/Qt3Support && echo $(QT4LIBS) || echo $(QT3LIBS))
endif
ifndef XAWFLAGS
XAWFLAGS := -I/sw/include
# XAWFLAGS := -I/usr/X11R6/include ##### some installations.
+13
View File
@@ -54,6 +54,19 @@ ifeq ($(G4SYSTEM),Linux-g++)
ifndef XMLIBS
XMLIBS := -lXm -lXpm
endif
ifndef QTHOME
QTHOME := /usr/local/Qt
endif
ifndef QTFLAGS
QTFLAGS := -I$(QTHOME)/include/Qt
QTFLAGS += -I$(QTHOME)/include
MOC := $(QTHOME)/bin/moc
endif
ifndef QTLIBS
QT3LIBS := -L$(QTHOME)/lib -lqt-mt
QT4LIBS := -L$(QTHOME)/lib -lQtCore -lQtGui -lQtOpenGL -lQtSql -lQtXml
QTLIBS := $(shell test -f $(QTHOME)/lib/libQt3Support.so && echo $(QT4LIBS) || echo $(QT3LIBS))
endif
ifndef XAWFLAGS
XAWFLAGS := -I/usr/X11R6/include
endif
+1 -1
View File
@@ -4,7 +4,7 @@
ifeq ($(G4SYSTEM),SUN-CC)
CXX := CC
ifdef G4OPTIMISE
CXXFLAGS := -O
CXXFLAGS := -xO2
else
ifdef G4DEBUG
CXXFLAGS := -g
+2 -2
View File
@@ -80,7 +80,7 @@ ifeq ($(G4SYSTEM),WIN32-VC)
$(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \
/libpath:$(G4LIBDIR) $(GLOBLIBS) \
$(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \
$(INTYLIBS) $(ANALYSISLIBS) $(UI32LIBS)
$(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS)
endef
define build-global-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`;\
@@ -103,6 +103,6 @@ ifeq ($(G4SYSTEM),WIN32-VC)
$(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \
/libpath:$(G4LIBDIR) $(GLOBLIBS) \
$(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \
$(INTYLIBS) $(ANALYSISLIBS) $(UI32LIBS)
$(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS)
endef
endif
+25 -2
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.29 2007/06/07 09:12:11 kmura Exp $
$Id: History,v 1.33 2007/11/25 19:47:02 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -18,6 +18,29 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
envs-V09-00-04 26 Nov. Koichi Murakami
[g4py]
- add G4 GDML module support
- update PL stuffs for 9.1
envs-V09-00-03 16 Nov. Koichi Murakami
- sorry, forget commiting this history file.
envs-V09-00-02 13 Nov. Koichi Murakami
[g4py]
- modified for 9.1 release
- add GDML support / GDML file I/O examples
envs-V09-00-01 07 Aug. Koichi Murakami
[g4py]
- add geometry stuffs(boolean solids) and testing stuffs
envs-V09-00-00 14 July Koichi Murakami
[g4py]
- bug fix
- update/add geometry stuffs
- new example of TestEm0
envs-V08-03-01 7 June Koichi Murakami
[g4py]
- modified for 9.0 (checked for cand-05)
@@ -39,7 +62,7 @@ envs-V08-01-01 21 November 2006 Koichi Murakami
envs-V08-01-00 20 November 2006 Koichi Murakami
[g4py]
- add MacOSX support
- more exposed staffs
- more exposed stuffs
- add physics list module
- add GUI examples using wxPython
@@ -25,7 +25,7 @@
//
// Taken from
// $Id: MomoEventAction.hh,v 1.2 2006/06/29 15:27:31 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
#ifndef MomoEventAction_h
@@ -25,7 +25,7 @@
//
// Taken after
// $Id: MomoRunAction.hh,v 1.2 2006/06/29 15:27:45 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
#ifndef MomoRunAction_h
@@ -25,7 +25,7 @@
//
// Taken from
// $Id: MomoEventAction.cc,v 1.2 2006/06/29 15:27:54 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
@@ -25,7 +25,7 @@
//
// Taken from
// $Id: MomoRunAction.cc,v 1.2 2006/06/29 15:28:02 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
+15 -6
View File
@@ -1,4 +1,4 @@
$Id: 00README,v 1.6 2006/08/10 08:48:26 kmura Exp $
$Id: 00README,v 1.9 2007/11/25 19:37:24 kmura Exp $
==========================================================================
Geant4Py
@@ -87,10 +87,19 @@ Fine tuning of the library path:
--with-package-dir=DIR Geant4 Package dir
--with-gdml-incdir=DIR GDML header dir
--with-gdml-libdir=DIR GDML library dir
--with-xercesc-incdir=DIR Xerces-C header dir [/usr/include]
--with-xercesc-libdir=DIR Xerces-C library dir [/usr/lib]
Enable/disable options: prefix with either --enable- or --disable-
openglx OpenGL support [auto]
openglxm OpenGLXm support [disable, $G4VIS_USE_OPENGLXM]
raytracerx RayTracerX support [disable, $G4VIS_USE_RAYTRACERX]
g4gdml GDML support (G4 module) [disable]
gdml GDML support (external, experimental) [disable]
also specifying inc/lib directories
Supported Architectures:
linux for Linux gcc 3.x and 4.x
@@ -154,12 +163,12 @@ Notes:
All users' libraries should be build in shared libaries.
2) Development Environment:
OS: SuSE Linux 10.1 (x86-64)
g++ : 4.1.0
Python: 2.4.2
CLHEP: 1.9.2.2 / 2.0.2.2
OS: SuSE Linux 10.3 (x86-64)
g++ : 4.2.1
Python: 2.5.1
CLHEP: 1.9.3.2 / 2.0.3.2
BOOST-Python: 1.33.1
ROOT: 5.10/00
ROOT: 5.16/00
Have A Fun!!
+1 -1
View File
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.1 2006/02/27 09:29:42 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py
# ===========================================================
+29 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.25 2007/06/07 09:07:37 kmura Exp $
$Id: History,v 1.32 2007/11/25 19:37:33 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,34 @@ Geant4Py is a Geant4-Python bridge.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
26 November 2007 K.Murakami
- add G4 GDML module support
- update PL for 9.1
12 November 2007 K.Murakami (1.5.0)
- add FTFP_BERT in PL for 9.1
- add GDML (external lib.) support (experimental)
- add exposure of G4Navigator
07 November 2007 K.Murakami
- update for 9.1
* G4ParticleGun
* G4NistManager
07 August 2007 K.Murakami (1.4.1)
- add boolean sold classes
- add G4PVPlacement constructors for geometry overlap check
- add gtest06/07 for geometry test
12 July 2007 K.Murakami (1.4.0)
- add version contorol in pyG4UIterminal.cc
- bug fix in pyG4VUserDetectorConstruction
- Construct() method should return PV
- update G4VSolid
- add specific CSG solid classes
- add gtest05 as an example constructing CSG solid geometry in Python
- a new example of TestEm0 is contributed by Jean
07 June 2007 K.Murakami
- modified for 9.0
- pyG4LossTableManager.cc : updated
+16 -1
View File
@@ -1,4 +1,4 @@
# $Id: g4py.gmk,v 1.3 2006/11/20 08:01:30 kmura Exp $
# $Id: g4py.gmk,v 1.5 2007/11/25 19:37:55 kmura Exp $
# ===========================================================
# Makefile for building Python module with Boost.Python
#
@@ -7,6 +7,7 @@ COMPILE_G4PY := true
G4PY_INCFLAGS := -I$(Q_G4_INCDIR)
G4PY_LOPT := -L$(Q_G4_LIBDIR) \
-lG4persistency \
-lG4readout \
-lG4run \
-lG4event \
@@ -39,3 +40,17 @@ G4PY_INCFLAGS += -I$(G4PY_INSTALL)/source/version
# boost patch
G4PY_INCFLAGS += -I$(G4PY_INSTALL)/source/boost
# GDML
ifeq ($(Q_ENABLE_GDML), 1)
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/Common/Writer
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/Common/Saxana
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/Common/Schema
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/G4Binding/G4Writer
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/G4Binding/G4Processor
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/G4Binding/G4Evaluator
G4PY_LOPT += -L$(Q_GDML_LIBDIR) \
-lSaxana -lProcesses -lWriter \
-lG4Evaluator -lG4Processor -lG4Subscribers -lG4Writer
endif
+18 -1
View File
@@ -1,4 +1,4 @@
# $Id: module.gmk,v 1.2 2006/04/25 05:53:05 kmura Exp $
# $Id: module.gmk,v 1.3 2007/11/25 19:38:03 kmura Exp $
# ===========================================================
# Script for building a Boost-Python module
# ===========================================================
@@ -34,6 +34,23 @@ endif
LOPT += -l$(Q_BOOST_PYTHON_LIB)
# Xerces-C ...
ifdef Q_XERCESC_INCDIR
ifneq ($(Q_XERCESC_INCDIR), /usr/include)
INCFLAGS += -I$(Q_XERCESC_INCDIR)
endif
endif
ifdef Q_XERCESC_LIBDIR
ifneq ($(Q_XERCESC_LIBDIR), /usr/lib)
ifneq ($(Q_XERCESC_LIBDIR), /usr/lib64)
LOPT += -L$(Q_XERCESC_LIBDIR)
endif
endif
LOPT += -lxerces-c
endif
# finished
CXXFLAGS += $(INCFLAGS)
+8 -3
View File
@@ -1,5 +1,5 @@
# $Id: linux.gmk,v 1.5 2006/08/10 08:49:08 kmura Exp $
# $Name: geant4-09-00 $
# $Id: linux.gmk,v 1.6 2007/11/13 08:04:34 kmura Exp $
# $Name: geant4-09-01 $
# ===========================================================
# System specific terms
# ===========================================================
@@ -63,7 +63,12 @@ ifdef COMPILE_G4PY
rpath2 := $(Q_G4_LIBDIR)
endif
ifneq ($(Q_CLHEP_LIBDIR), $(Q_G4_LIBDIR))
rpath3 := :$(Q_CLHEP_LIBDIR)
rpath3 := $(Q_CLHEP_LIBDIR)
endif
ifeq ($(Q_ENABLE_GDML), 1)
ifneq ($(Q_GDML_LIBDIR), $(Q_G4_LIBDIR))
rpath3 += :$(Q_GDML_LIBDIR)
endif
endif
rpath4 := $(Q_LIBDIR)
endif
@@ -1,5 +1,5 @@
# $Id: linuxx8664gcc.gmk,v 1.5 2006/08/10 08:49:08 kmura Exp $
# $Name: geant4-09-00 $
# $Id: linuxx8664gcc.gmk,v 1.6 2007/11/13 08:04:34 kmura Exp $
# $Name: geant4-09-01 $
# ===========================================================
# System specific terms
# ===========================================================
@@ -63,7 +63,12 @@ ifdef COMPILE_G4PY
rpath2 := $(Q_G4_LIBDIR)
endif
ifneq ($(Q_CLHEP_LIBDIR), $(Q_G4_LIBDIR))
rpath3 := :$(Q_CLHEP_LIBDIR)
rpath3 := $(Q_CLHEP_LIBDIR)
endif
ifeq ($(Q_ENABLE_GDML), 1)
ifneq ($(Q_GDML_LIBDIR), $(Q_G4_LIBDIR))
rpath3 += :$(Q_GDML_LIBDIR)
endif
endif
rpath4 := $(Q_LIBDIR)
endif
+1 -1
View File
@@ -1,5 +1,5 @@
# $Id: macosx.gmk,v 1.4 2006/08/10 08:49:08 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# System specific terms
#
+124 -1
View File
@@ -1,5 +1,5 @@
#! /bin/sh -
#$Id: configure,v 1.5 2006/11/20 08:01:17 kmura Exp $
#$Id: configure,v 1.7 2007/11/25 19:37:44 kmura Exp $
# ======================================================================
# A configure script for Geant4Py
# ======================================================================
@@ -50,10 +50,19 @@ Fine tuning of the library path:
--with-package-dir=DIR Geant4 Package dir
--with-gdml-incdir=DIR GDML header dir
--with-gdml-libdir=DIR GDML library dir
--with-xercesc-incdir=DIR Xerces-C header dir [/usr/include]
--with-xercesc-libdir=DIR Xerces-C library dir [/usr/lib]
Enable/disable options: prefix with either --enable- or --disable-
openglx OpenGLX support [auto]
openglxm OpenGLXm support [disable, \$G4VIS_USE_OPENGLXM]
raytracerx RayTracerX support [disable, \$G4VIS_USE_RAYTRACERX]
g4gdml GDML support (G4 module) [disable]
gdml GDML support (external, experimental) [disable]
also specifying inc/lib directories
Supported Architectures:
linux for Linux gcc 3.x and 4.x
@@ -94,6 +103,14 @@ enable_raytracerx=${enable_raytracerx:-0}
enable_physicslist=0
enable_g4gdml=0
enable_gdml=0
gdml_incdir=/zzz
gdml_libdir=/zzz
xercesc_incdir=/usr/include
# checking system
case $1 in
linux|linuxx8664gcc|macosx)
@@ -149,6 +166,10 @@ do
--with-boost-incdir=*) boost_incdir=$optarg ;;
--with-boost-libdir=*) boost_libdir=$optarg ;;
--with-boost-python-lib=*) boost_python_lib=$optarg ;;
--with-gdml-incdir=*) gdml_incdir=$optarg ;;
--with-gdml-libdir=*) gdml_libdir=$optarg ;;
--with-xercesc-incdir=*) xercesc_incdir=$optarg ;;
--with-xercesc-libdir=*) xercesc_libdir=$optarg ;;
# ---------------------------------------------------------------
--enable-openglx ) enable_openglx=1 ;;
--disable-openglx ) enable_openglx=0 ;;
@@ -156,6 +177,10 @@ do
--disable-openglxm ) enable_openglxm=0 ;;
--enable-raytracerx ) enable_raytracerx=1 ;;
--disable-raytracerx ) enable_raytracerx=0 ;;
--enable-g4gdml ) enable_g4gdml=1 ;;
--disable-g4gdml ) enable_g4gdml=0 ;;
--enable-gdml ) enable_gdml=1 ;;
--disable-gdml ) enable_gdml=0 ;;
# ---------------------------------------------------------------
-*)
echo "Unrecognized option: $1"
@@ -342,6 +367,79 @@ else
echo "yes"
fi
# ---
echo -n "Checking for G4GDML support ..."
if [ $enable_g4gdml == 0 ]; then
echo "no"
else
if [ -f "$g4_incdir"/G4GDMLParser.hh ]; then
echo "yes"
else
echo "no"
echo "### G4 GDML component is not found."
exit -1
fi
fi
# ---
echo -n "Checking for GDML support ..."
if [ $enable_gdml == 0 ]; then
echo "no"
else
echo "yes"
fi
if [ $enable_gdml == 1 ]; then
echo -n "Checking for GDML include dir ..."
if [ -d "$gdml_incdir"/G4Binding ]; then
echo "yes"
else
echo "no"
echo "### $gdml_incdir/G4Binding does not exist. "
echo "Try --with-gdml-incdir option."
exit -1
fi
echo -n "Checking for GDML lib dir ..."
if [ -f "$gdml_libdir"/libG4Processor.so ]; then
echo "yes"
else
echo "no"
echo "### $gdml_libdir/libG4Processor.so does not exist. "
echo "Try --with-gdml-libdir option."
exit -1
fi
fi
# ---
if [ $enable_g4gdml == 1 -o $enable_gdml == 1 ]; then
echo -n "Checking for Xerces-C include dir ..."
if [ -d "$xercesc_incdir/xercesc" ]; then
echo "yes"
else
echo "no"
echo "### $xercesc_incdir/xercesc does not exist. "
echo "Try --with-xercesc-incdir option."
exit -1
fi
echo -n "Checking for Xerces-C lib dir ..."
if [ ! $xercesc_libdir ]; then
if [ $arch == 64 ]; then
xercesc_libdir=/usr/lib64
else
xercesc_libdir=/usr/lib
fi
fi
if [ -f "$xercesc_libdir"/libxerces-c.so ]; then
echo "yes"
else
echo "no"
echo "### $xercesc_libdir/libxerces-c.so does not exist. "
echo "Try --with-xercesc-libdir option."
exit -1
fi
fi
# ---
echo -n "Writing config.gmk ... "
@@ -391,7 +489,24 @@ Q_ENABLE_RAYTRACERX := $enable_raytracerx
Q_ENABLE_PHYSICSLIST := $enable_physicslist
Q_ENABLE_G4GDML := $enable_g4gdml
Q_ENABLE_GDML := $enable_gdml
EOF
if [ $enable_gdml == 1 ]; then
cat >> $make_config <<EOF
Q_GDML_INCDIR := $gdml_incdir
Q_GDML_LIBDIR := $gdml_libdir
EOF
fi
if [ $enable_g4gdml == 1 -o $enable_gdml == 1 ]; then
cat >> $make_config <<EOF
Q_XERCESC_INCDIR := $xercesc_incdir
Q_XERCESC_LIBDIR := $xercesc_libdir
EOF
fi
echo "done"
echo -n "Writing config.status ... "
echo $arguments > config.status
@@ -416,6 +531,14 @@ if [ $enable_physicslist = 1 ]; then
echo -n " physicslist"
fi
if [ $enable_g4gdml = 1 ]; then
echo -n " g4gdml"
fi
if [ $enable_gdml = 1 ]; then
echo -n " gdml"
fi
echo "."
# ---
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.2 2006/06/13 15:53:08 kmura Exp $
$Id: History,v 1.3 2007/11/13 07:58:42 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,9 @@ A set of examples for Geant4Py.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
12 November 2007 K.Murakami
- add GDML I/O examples
14 June 2006 K.Murakami
- Summary
[demos/water_phantom]
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: README,v 1.2 2006/06/13 16:07:20 kmura Exp $
$Id: README,v 1.3 2007/11/13 07:58:42 kmura Exp $
-------------------------------------------------------------------
This directory contains a set of examples for Geant4Py.
@@ -29,3 +29,6 @@ magnetic field and visualization outputs.
[emplot]
Examples of plotting photon cross sections and stopping powers with ROOT
[gdml]
Examples of writing/reading user's geometry to/from a GDML file
@@ -0,0 +1,199 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: DetectorConstruction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "DetectorMessenger.hh"
#include "G4Material.hh"
#include "G4NistManager.hh"
#include "G4Box.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4GeometryManager.hh"
#include "G4PhysicalVolumeStore.hh"
#include "G4LogicalVolumeStore.hh"
#include "G4SolidStore.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::DetectorConstruction()
:pBox(0), aMaterial(0)
{
BoxSize = 1*mm;
DefineMaterials();
SetMaterial("Germanium");
detectorMessenger = new DetectorMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::~DetectorConstruction()
{ delete detectorMessenger;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::Construct()
{
return ConstructVolumes();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::DefineMaterials()
{
//
// define Elements
//
G4double z,a;
G4Element* H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.01*g/mole);
G4Element* N = new G4Element("Nitrogen" ,"N" , z= 7., a= 14.01*g/mole);
G4Element* O = new G4Element("Oxygen" ,"O" , z= 8., a= 16.00*g/mole);
G4Element* Ge = new G4Element("Germanium","Ge", z=32., a= 72.59*g/mole);
G4Element* Bi = new G4Element("Bismuth" ,"Bi", z=83., a= 208.98*g/mole);
//
// define materials
//
G4double density;
G4int ncomponents, natoms;
G4double fractionmass;
G4Material* Air =
new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
Air->AddElement(N, fractionmass=70.*perCent);
Air->AddElement(O, fractionmass=30.*perCent);
G4Material* H2l =
new G4Material("H2liquid", density= 70.8*mg/cm3, ncomponents=1);
H2l->AddElement(H, fractionmass=1.);
G4Material* H2O =
new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
H2O->AddElement(H, natoms=2);
H2O->AddElement(O, natoms=1);
///H2O->SetChemicalFormula("H_2O");
H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
G4Material* steam =
new G4Material("WaterSteam", density= 1.0*mg/cm3, ncomponents=1);
steam->AddMaterial(H2O, fractionmass=1.);
steam->GetIonisation()->SetMeanExcitationEnergy(71.6*eV);
G4Material* BGO =
new G4Material("BGO", density= 7.10*g/cm3, ncomponents=3);
BGO->AddElement(O , natoms=12);
BGO->AddElement(Ge, natoms= 3);
BGO->AddElement(Bi, natoms= 4);
new G4Material("Aluminium" , z=13., a= 26.98*g/mole, density= 2.700*g/cm3);
new G4Material("Silicon" , z=14., a= 28.09*g/mole, density= 2.330*g/cm3);
new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
new G4Material("Iron" , z=26., a= 55.85*g/mole, density= 7.870*g/cm3);
new G4Material("Copper" , z=29., a= 63.55*g/mole, density= 8.960*g/cm3);
new G4Material("Germanium" , z=32., a= 72.61*g/mole, density= 5.323*g/cm3);
new G4Material("Silver" , z=47., a=107.87*g/mole, density= 10.50*g/cm3);
new G4Material("Tungsten" , z=74., a=183.85*g/mole, density= 19.30*g/cm3);
new G4Material("Lead" , z=82., a=207.19*g/mole, density= 11.35*g/cm3);
new G4Material("Uranium" , z=92., a=238.03*g/mole, density= 18.95*g/cm3);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
{
// Cleanup old geometry
G4GeometryManager::GetInstance()->OpenGeometry();
G4PhysicalVolumeStore::GetInstance()->Clean();
G4LogicalVolumeStore::GetInstance()->Clean();
G4SolidStore::GetInstance()->Clean();
G4Box*
sBox = new G4Box("Container", //its name
BoxSize/2,BoxSize/2,BoxSize/2); //its dimensions
G4LogicalVolume*
lBox = new G4LogicalVolume(sBox, //its shape
aMaterial, //its material
aMaterial->GetName()); //its name
pBox = new G4PVPlacement(0, //no rotation
G4ThreeVector(), //at (0,0,0)
lBox, //its logical volume
aMaterial->GetName(), //its name
0, //its mother volume
false, //no boolean operation
0); //copy number
//always return the root volume
//
return pBox;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::PrintParameters()
{
G4cout << "\n The Box is " << G4BestUnit(BoxSize,"Length")
<< " of " << aMaterial->GetName() << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4RunManager.hh"
void DetectorConstruction::SetMaterial(G4String materialChoice)
{
// search the material by its name, or build it from nist data base
G4Material* pttoMaterial =
G4NistManager::Instance()->FindOrBuildMaterial(materialChoice);
if (pttoMaterial) {
aMaterial = pttoMaterial;
if (pBox) G4RunManager::GetRunManager()
->DefineWorldVolume(ConstructVolumes());
} else {
G4cout << "\n--> warning from DetectorConstruction::SetMaterial : "
<< materialChoice << " not found" << G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: DetectorConstruction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DetectorConstruction_h
#define DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4LogicalVolume;
class G4Material;
class DetectorMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction();
~DetectorConstruction();
public:
G4VPhysicalVolume* Construct();
void SetMaterial (G4String);
public:
const
G4VPhysicalVolume* GetWorld() {return pBox;};
G4double GetSize() {return BoxSize;};
G4Material* GetMaterial() {return aMaterial;};
void PrintParameters();
private:
G4VPhysicalVolume* pBox;
G4double BoxSize;
G4Material* aMaterial;
DetectorMessenger* detectorMessenger;
private:
void DefineMaterials();
G4VPhysicalVolume* ConstructVolumes();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorMessenger.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorMessenger.hh"
#include "DetectorConstruction.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
:Detector(Det)
{
testemDir = new G4UIdirectory("/testem/");
testemDir->SetGuidance("commands specific to this example");
detDir = new G4UIdirectory("/testem/det/");
detDir->SetGuidance("detector construction commands");
MaterCmd = new G4UIcmdWithAString("/testem/det/setMat",this);
MaterCmd->SetGuidance("Select material of the box.");
MaterCmd->SetParameterName("choice",false);
MaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::~DetectorMessenger()
{
delete MaterCmd;
delete detDir;
delete testemDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
{
if( command == MaterCmd )
{ Detector->SetMaterial(newValue);}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorMessenger.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DetectorMessenger_h
#define DetectorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class DetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class DetectorMessenger: public G4UImessenger
{
public:
DetectorMessenger(DetectorConstruction* );
~DetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
DetectorConstruction* Detector;
G4UIdirectory* testemDir;
G4UIdirectory* detDir;
G4UIcmdWithAString* MaterCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,14 @@
# $Id: GNUmakefile,v 1.2 2007/07/06 06:41:39 kmura Exp $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
include ../../../../config/config.gmk
# python module name
MODULE := ../TestEm0
include $(G4PY_INSTALL)/config/g4py.gmk
include $(G4PY_INSTALL)/config/module.gmk
@@ -24,11 +24,11 @@
// ********************************************************************
//
//
// $Id: PhysListEmStandard.cc,v 1.7 2006/06/29 17:00:39 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: PhysListEmStandard.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListEmStandard.hh"
#include "G4ParticleDefinition.hh"
@@ -54,19 +54,19 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmStandard::PhysListEmStandard(const G4String& name)
: G4VPhysicsConstructor(name)
{}
: G4VPhysicsConstructor(name)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmStandard::~PhysListEmStandard()
{}
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListEmStandard::ConstructProcess()
{
// Add EM processes realised on base of prototype of model approach design
// Add standard EM Processes
theParticleIterator->reset();
while( (*theParticleIterator)() ){
@@ -75,43 +75,42 @@ void PhysListEmStandard::ConstructProcess()
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
pmanager->AddDiscreteProcess(new G4ComptonScattering);
pmanager->AddDiscreteProcess(new G4GammaConversion);
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3);
pmanager->AddProcess(new G4MuPairProduction, -1,-1,4);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
} else if( particleName == "GenericIon" ) {
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
pmanager->AddProcess(new G4ionIonisation, -1,2,2);
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
pmanager->AddProcess(new G4hIonisation, -1,2,2);
pmanager->AddProcess(new G4hIonisation, -1,2,2);
}
}
}
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: PhysListEmStandard.hh,v 1.3 2006/06/29 16:59:37 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: PhysListEmStandard.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -42,16 +42,16 @@ class PhysListEmStandard : public G4VPhysicsConstructor
{
public:
PhysListEmStandard(const G4String& name = "standard");
virtual ~PhysListEmStandard();
~PhysListEmStandard();
public:
// This method is dummy for physics.
virtual void ConstructParticle() {};
// This method is dummy for physics
void ConstructParticle() {};
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
void ConstructProcess();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,14 +23,51 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PhysicsList.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// $Id: PhysListParticles.cc,v 1.3 2006/06/29 17:00:43 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListParticles.hh"
#include "PhysicsList.hh"
#include "PhysicsListMessenger.hh"
#include "PhysListEmStandard.hh"
#include "G4LossTableManager.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::PhysicsList()
: G4VModularPhysicsList()
{
G4LossTableManager::Instance();
currentDefaultCut = 1.0*mm;
cutForGamma = currentDefaultCut;
cutForElectron = currentDefaultCut;
cutForPositron = currentDefaultCut;
pMessenger = new PhysicsListMessenger(this);
SetVerboseLevel(1);
// EM physics
emName = G4String("standard");
emPhysicsList = new PhysListEmStandard(emName);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::~PhysicsList()
{
delete pMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// Bosons
#include "G4ChargedGeantino.hh"
@@ -70,28 +107,15 @@
#include "G4AntiNeutron.hh"
// Nuclei
#include "G4Alpha.hh"
#include "G4Deuteron.hh"
#include "G4Triton.hh"
#include "G4He3.hh"
#include "G4Alpha.hh"
#include "G4GenericIon.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListParticles::PhysListParticles(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListParticles::~PhysListParticles()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListParticles::ConstructParticle()
void PhysicsList::ConstructParticle()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
@@ -135,10 +159,95 @@ void PhysListParticles::ConstructParticle()
// ions
G4Deuteron::DeuteronDefinition();
G4Triton::TritonDefinition();
G4He3::He3Definition();
G4Alpha::AlphaDefinition();
G4GenericIon::GenericIonDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmProcessOptions.hh"
void PhysicsList::ConstructProcess()
{
// Transportation
//
AddTransportation();
// Electromagnetic physics list
//
emPhysicsList->ConstructProcess();
// Em options
//
G4EmProcessOptions emOptions;
emOptions.SetBuildCSDARange(true);
emOptions.SetMaxEnergyForCSDARange(100*TeV);
emOptions.SetDEDXBinningForCSDARange(120);
emOptions.SetVerbose(0);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::AddPhysicsList(const G4String& name)
{
if (verboseLevel>0) {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
}
if (name == emName) return;
if (name == "standard") {
emName = name;
delete emPhysicsList;
emPhysicsList = new PhysListEmStandard(name);
} else {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
<< " is not defined"
<< G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
void PhysicsList::SetCuts()
{
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForPositron, "e+");
DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForGamma(G4double cut)
{
cutForGamma = cut;
SetParticleCuts(cutForGamma, G4Gamma::Gamma());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForElectron(G4double cut)
{
cutForElectron = cut;
SetParticleCuts(cutForElectron, G4Electron::Electron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForPositron(G4double cut)
{
cutForPositron = cut;
SetParticleCuts(cutForPositron, G4Positron::Positron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,58 +23,56 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PhysicsList.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// 14.10.02 (V.Ivanchenko) provide modular list on base of old PhysicsList
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsList_h
#define PhysicsList_h 1
#include "exrdmPhysListGeneral.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4Decay.hh"
#include "G4RadioactiveDecay.hh"
#include "G4GenericIon.hh"
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
exrdmPhysListGeneral::exrdmPhysListGeneral(const G4String& name)
: G4VPhysicsConstructor(name)
{}
class PhysicsListMessenger;
class G4VPhysicsConstructor;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
exrdmPhysListGeneral::~exrdmPhysListGeneral()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void exrdmPhysListGeneral::ConstructProcess()
class PhysicsList: public G4VModularPhysicsList
{
// Add Decay Process
public:
PhysicsList();
~PhysicsList();
G4Decay* fDecayProcess = new G4Decay();
G4RadioactiveDecay* theRadioactiveDecay = new G4RadioactiveDecay();
G4GenericIon* ion = G4GenericIon::GenericIon();
void ConstructParticle();
void ConstructProcess();
void AddPhysicsList(const G4String& name);
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (particle == ion) {
pmanager->AddProcess(theRadioactiveDecay, 0, -1, 3);
} else if (fDecayProcess->IsApplicable(*particle)) {
pmanager ->AddProcess(fDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
pmanager ->SetProcessOrdering(fDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(fDecayProcess, idxAtRest);
}
}
}
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
private:
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4double currentDefaultCut;
G4VPhysicsConstructor* emPhysicsList;
G4String emName;
PhysicsListMessenger* pMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,119 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysicsListMessenger.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsListMessenger.hh"
#include "PhysicsList.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
:pPhysicsList(pPhys)
{
physDir = new G4UIdirectory("/testem/phys/");
physDir->SetGuidance("physics list commands");
gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setGCut",this);
gammaCutCmd->SetGuidance("Set gamma cut.");
gammaCutCmd->SetParameterName("Gcut",false);
gammaCutCmd->SetUnitCategory("Length");
gammaCutCmd->SetRange("Gcut>0.0");
gammaCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
electCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setECut",this);
electCutCmd->SetGuidance("Set electron cut.");
electCutCmd->SetParameterName("Ecut",false);
electCutCmd->SetUnitCategory("Length");
electCutCmd->SetRange("Ecut>0.0");
electCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
protoCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setPCut",this);
protoCutCmd->SetGuidance("Set positron cut.");
protoCutCmd->SetParameterName("Pcut",false);
protoCutCmd->SetUnitCategory("Length");
protoCutCmd->SetRange("Pcut>0.0");
protoCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
allCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setCuts",this);
allCutCmd->SetGuidance("Set cut for all.");
allCutCmd->SetParameterName("cut",false);
allCutCmd->SetUnitCategory("Length");
allCutCmd->SetRange("cut>0.0");
allCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
pListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
pListCmd->SetGuidance("Add modula physics list.");
pListCmd->SetParameterName("PList",false);
pListCmd->AvailableForStates(G4State_PreInit);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::~PhysicsListMessenger()
{
delete gammaCutCmd;
delete electCutCmd;
delete protoCutCmd;
delete allCutCmd;
delete pListCmd;
delete physDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if( command == gammaCutCmd )
{ pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));}
if( command == electCutCmd )
{ pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));}
if( command == protoCutCmd )
{ pPhysicsList->SetCutForPositron(protoCutCmd->GetNewDoubleValue(newValue));}
if( command == allCutCmd )
{
G4double cut = allCutCmd->GetNewDoubleValue(newValue);
pPhysicsList->SetCutForGamma(cut);
pPhysicsList->SetCutForElectron(cut);
pPhysicsList->SetCutForPositron(cut);
}
if( command == pListCmd )
{ pPhysicsList->AddPhysicsList(newValue);}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysicsListMessenger.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsListMessenger_h
#define PhysicsListMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class PhysicsList;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsListMessenger: public G4UImessenger
{
public:
PhysicsListMessenger(PhysicsList* );
~PhysicsListMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
PhysicsList* pPhysicsList;
G4UIdirectory* physDir;
G4UIcmdWithADoubleAndUnit* gammaCutCmd;
G4UIcmdWithADoubleAndUnit* electCutCmd;
G4UIcmdWithADoubleAndUnit* protoCutCmd;
G4UIcmdWithADoubleAndUnit* allCutCmd;
G4UIcmdWithAString* pListCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PrimaryGeneratorAction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PrimaryGeneratorAction.hh"
#include "DetectorConstruction.hh"
#include "G4Event.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::PrimaryGeneratorAction( DetectorConstruction* DC)
:Detector(DC)
{
particleGun = new G4ParticleGun(1);
SetDefaultKinematic();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete particleGun;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::SetDefaultKinematic()
{
G4ParticleDefinition* particle
= G4ParticleTable::GetParticleTable()->FindParticle("e-");
particleGun->SetParticleDefinition(particle);
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
particleGun->SetParticleEnergy(100*MeV);
G4double position = -0.5*(Detector->GetSize());
particleGun->SetParticlePosition(G4ThreeVector(position,0.*cm,0.*cm));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
//this function is called at the begining of event
//
particleGun->GeneratePrimaryVertex(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PrimaryGeneratorAction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PrimaryGeneratorAction_h
#define PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "G4ParticleGun.hh"
#include "globals.hh"
class G4Event;
class DetectorConstruction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction(DetectorConstruction*);
~PrimaryGeneratorAction();
public:
void SetDefaultKinematic();
void GeneratePrimaries(G4Event*);
G4ParticleGun* GetParticleGun() {return particleGun;}
private:
G4ParticleGun* particleGun;
DetectorConstruction* Detector;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,350 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "RunAction.hh"
#include "DetectorConstruction.hh"
#include "PrimaryGeneratorAction.hh"
#include "G4Run.hh"
#include "G4ProcessManager.hh"
#include "G4UnitsTable.hh"
#include "G4EmCalculator.hh"
#include "G4Electron.hh"
#include <vector>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin)
:detector(det), primary(kin)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::~RunAction()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::BeginOfRunAction(const G4Run*)
{
//set precision for printing
G4int prec = G4cout.precision(6);
// get particle
G4ParticleDefinition* particle = primary->GetParticleGun()
->GetParticleDefinition();
G4String partName = particle->GetParticleName();
G4double charge = particle->GetPDGCharge();
G4double energy = primary->GetParticleGun()->GetParticleEnergy();
// get material
G4Material* material = detector->GetMaterial();
G4String matName = material->GetName();
G4double density = material->GetDensity();
G4double radl = material->GetRadlen();
G4cout << "\n " << partName << " ("
<< G4BestUnit(energy,"Energy") << ") in "
<< material->GetName() << " (density: "
<< G4BestUnit(density,"Volumic Mass") << "; radiation length: "
<< G4BestUnit(radl, "Length") << ")" << G4endl;
// get cuts
GetCuts();
if (charge != 0.) {
G4cout << "\n Range cuts : \t gamma "
<< std::setw(8) << G4BestUnit(rangeCut[0],"Length")
<< "\t e- " << std::setw(8) << G4BestUnit(rangeCut[1],"Length");
G4cout << "\n Energy cuts : \t gamma "
<< std::setw(8) << G4BestUnit(energyCut[0],"Energy")
<< "\t e- " << std::setw(8) << G4BestUnit(energyCut[1],"Energy")
<< G4endl;
}
// get processList and extract EM processes (but not MultipleScattering)
G4ProcessVector* plist = particle->GetProcessManager()->GetProcessList();
G4String procName;
G4double cut;
std::vector<G4String> emName;
std::vector<G4double> enerCut;
size_t length = plist->size();
for (size_t j=0; j<length; j++) {
procName = (*plist)[j]->GetProcessName();
cut = energyCut[1];
if ((procName == "eBrem")||(procName == "muBrems")) cut = energyCut[0];
if (((*plist)[j]->GetProcessType() == fElectromagnetic) &&
(procName != "msc")) {
emName.push_back(procName);
enerCut.push_back(cut);
}
}
// print list of processes
G4cout << "\n processes : ";
for (size_t j=0; j<emName.size();j++)
G4cout << "\t" << std::setw(13) << emName[j] << "\t";
G4cout << "\t" << std::setw(13) <<"total";
//instanciate EmCalculator
G4EmCalculator emCal;
// emCal.SetVerbose(2);
//compute cross section per atom (only for single material)
if (material->GetNumberOfElements() == 1) {
G4double Z = material->GetZ();
G4double A = material->GetA();
std::vector<G4double> sigma0;
G4double sig, sigtot = 0.;
for (size_t j=0; j<emName.size();j++) {
sig = emCal.ComputeCrossSectionPerAtom
(energy,particle,emName[j],Z,A,enerCut[j]);
sigtot += sig;
sigma0.push_back(sig);
}
sigma0.push_back(sigtot);
G4cout << "\n \n cross section per atom : ";
for (size_t j=0; j<sigma0.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(sigma0[j], "Surface");
}
G4cout << G4endl;
}
//get cross section per volume
std::vector<G4double> sigma1;
std::vector<G4double> sigma2;
G4double Sig, Sigtot = 0.;
for (size_t j=0; j<emName.size();j++) {
Sig = emCal.GetCrossSectionPerVolume(energy,particle,emName[j],material);
if (Sig == 0.) Sig = emCal.ComputeCrossSectionPerVolume
(energy,particle,emName[j],material,enerCut[j]);
Sigtot += Sig;
sigma1.push_back(Sig);
sigma2.push_back(Sig/density);
}
sigma1.push_back(Sigtot);
sigma2.push_back(Sigtot/density);
//print cross sections
G4cout << "\n \n cross section per volume : ";
for (size_t j=0; j<sigma1.size();j++) {
G4cout << "\t" << std::setw(13) << sigma1[j]*cm << " cm^-1";
}
G4cout << "\n cross section per mass : ";
for (size_t j=0; j<sigma2.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(sigma2[j], "Surface/Mass");
}
//print mean free path
G4double lambda;
G4cout << "\n \n mean free path : ";
for (size_t j=0; j<sigma1.size();j++) {
lambda = DBL_MAX;
if (sigma1[j] > 0.) lambda = 1/sigma1[j];
G4cout << "\t" << std::setw(13) << G4BestUnit( lambda, "Length");
}
//mean free path (g/cm2)
G4cout << "\n (g/cm2) : ";
for (size_t j=0; j<sigma2.size();j++) {
lambda = DBL_MAX;
if (sigma2[j] > 0.) lambda = 1/sigma2[j];
G4cout << "\t" << std::setw(13) << G4BestUnit( lambda, "Mass/Surface");
}
G4cout << G4endl;
if (charge == 0.) {
G4cout.precision(prec);
G4cout << "\n-------------------------------------------------------------\n"
<< G4endl;
return;
}
//get stopping power
std::vector<G4double> dedx1;
std::vector<G4double> dedx2;
G4double dedx, dedxtot = 0.;
for (size_t j=0; j<emName.size();j++) {
dedx = emCal.ComputeDEDX(energy,particle,emName[j],material,enerCut[j]);
dedx1.push_back(dedx);
dedx2.push_back(dedx/density);
}
dedxtot = emCal.GetDEDX(energy,particle,material);
dedx1.push_back(dedxtot);
dedx2.push_back(dedxtot/density);
//print stopping power
G4cout << "\n \n restricted dE/dx : ";
for (size_t j=0; j<sigma1.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(dedx1[j],"Energy/Length");
}
G4cout << "\n (MeV/g/cm2) : ";
for (size_t j=0; j<sigma2.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(dedx2[j],"Energy*Surface/Mass");
}
//get range from restricted dedx
G4double range1 = emCal.GetRangeFromRestricteDEDX(energy,particle,material);
G4double range2 = range1*density;
//get range from full dedx
G4double Range1 = emCal.GetCSDARange(energy,particle,material);
G4double Range2 = Range1*density;
//print range
G4cout << "\n \n range from restrict dE/dx: "
<< "\t" << std::setw(8) << G4BestUnit(range1,"Length")
<< " (" << std::setw(8) << G4BestUnit(range2,"Mass/Surface") << ")";
G4cout << "\n range from full dE/dx : "
<< "\t" << std::setw(8) << G4BestUnit(Range1,"Length")
<< " (" << std::setw(8) << G4BestUnit(Range2,"Mass/Surface") << ")";
//get transport mean free path (for multiple scattering)
G4double MSmfp1 = emCal.GetMeanFreePath(energy,particle,"msc",material);
G4double MSmfp2 = MSmfp1*density;
//print transport mean free path
G4cout << "\n \n transport mean free path : "
<< "\t" << std::setw(8) << G4BestUnit(MSmfp1,"Length")
<< " (" << std::setw(8) << G4BestUnit(MSmfp2,"Mass/Surface") << ")";
if (particle == G4Electron::Electron()) CriticalEnergy();
G4cout << "\n-------------------------------------------------------------\n";
G4cout << G4endl;
// reset default precision
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::EndOfRunAction(const G4Run* )
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4ProductionCutsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::GetCuts()
{
G4ProductionCutsTable* theCoupleTable =
G4ProductionCutsTable::GetProductionCutsTable();
size_t numOfCouples = theCoupleTable->GetTableSize();
const G4MaterialCutsCouple* couple = 0;
G4int index = 0;
for (size_t i=0; i<numOfCouples; i++) {
couple = theCoupleTable->GetMaterialCutsCouple(i);
if (couple->GetMaterial() == detector->GetMaterial()) {index = i; break;}
}
rangeCut[0] =
(*(theCoupleTable->GetRangeCutsVector(idxG4GammaCut)))[index];
rangeCut[1] =
(*(theCoupleTable->GetRangeCutsVector(idxG4ElectronCut)))[index];
rangeCut[2] =
(*(theCoupleTable->GetRangeCutsVector(idxG4PositronCut)))[index];
energyCut[0] =
(*(theCoupleTable->GetEnergyCutsVector(idxG4GammaCut)))[index];
energyCut[1] =
(*(theCoupleTable->GetEnergyCutsVector(idxG4ElectronCut)))[index];
energyCut[2] =
(*(theCoupleTable->GetEnergyCutsVector(idxG4PositronCut)))[index];
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::CriticalEnergy()
{
// compute e- critical energy (Rossi definition) and Moliere radius.
// Review of Particle Physics - Eur. Phys. J. C3 (1998) page 147
//
G4EmCalculator emCal;
const G4Material* material = detector->GetMaterial();
const G4double radl = material->GetRadlen();
G4double ekin = 5*MeV;
G4double deioni;
G4double err = 1., errmax = 0.001;
G4int iter = 0 , itermax = 10;
while (err > errmax && iter < itermax) {
iter++;
deioni = radl*
emCal.ComputeDEDX(ekin,G4Electron::Electron(),"eIoni",material);
err = std::abs(deioni - ekin)/ekin;
ekin = deioni;
}
G4cout << "\n \n critical energy (Rossi) : "
<< "\t" << std::setw(8) << G4BestUnit(ekin,"Energy");
//Pdg formula (only for single material)
G4double pdga[2] = { 610*MeV, 710*MeV };
G4double pdgb[2] = { 1.24, 0.92 };
G4double EcPdg = 0.;
if (material->GetNumberOfElements() == 1) {
G4int istat = 0;
if (material->GetState() == kStateGas) istat = 1;
G4double Zeff = material->GetZ() + pdgb[istat];
EcPdg = pdga[istat]/Zeff;
G4cout << "\t\t\t (from Pdg formula : "
<< std::setw(8) << G4BestUnit(EcPdg,"Energy") << ")";
}
const G4double Es = 21.2052*MeV;
G4double rMolier1 = Es/ekin, rMolier2 = rMolier1*radl;
G4cout << "\n Moliere radius : "
<< "\t" << std::setw(8) << rMolier1 << " X0 "
<< "= " << std::setw(8) << G4BestUnit(rMolier2,"Length");
if (material->GetNumberOfElements() == 1) {
G4double rMPdg = radl*Es/EcPdg;
G4cout << "\t (from Pdg formula : "
<< std::setw(8) << G4BestUnit(rMPdg,"Length") << ")";
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef RunAction_h
#define RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4Run;
class DetectorConstruction;
class PrimaryGeneratorAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class RunAction : public G4UserRunAction
{
public:
RunAction(DetectorConstruction*, PrimaryGeneratorAction*);
~RunAction();
public:
void BeginOfRunAction(const G4Run*);
void EndOfRunAction(const G4Run*);
void GetCuts();
void CriticalEnergy();
private:
DetectorConstruction* detector;
PrimaryGeneratorAction* primary;
G4double rangeCut[3];
G4double energyCut[3];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,116 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: pyTestEm0.cc,v 1.2 2007/07/06 06:41:59 kmura Exp $
// $Name: geant4-09-01 $
// ====================================================================
// pyTestEm0.cc
//
// python wrapper for user application
// 2007 Q
// ====================================================================
#include "DetectorConstruction.hh"
#include "RunAction.hh"
#include "PhysicsList.hh"
#include "PrimaryGeneratorAction.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ParticleTable.hh"
#include <boost/python.hpp>
#include <boost/python/list.hpp>
#include <vector>
#include <string>
using namespace boost::python;
// ========================================================================================
// Wrap Gean4 methods which are not accessible from python because they return a pointer.
// ========================================================================================
boost::python::list getParticleTable()
{
// Create a list on heap which will be return to python
boost::python::list *particleList = new boost::python::list();
// Get particle list fron G4ParticleTable
G4ParticleTable *g4ParticleList = G4ParticleTable::GetParticleTable();
// Fill python list from g4ParticleList
for ( int index = 0 ; index <= g4ParticleList->size() ; index++ ) {
particleList->append ( (std::string) g4ParticleList->GetParticleName(index) );
}
return *particleList;
}
// ====================================================================
boost::python::list getMaterialTable()
{
// Create a list on heap which will be return to python
boost::python::list *materialTableList = new boost::python::list();
// Get material list fron G4Material
G4MaterialTable materialList = *G4Material::GetMaterialTable();
std::vector<G4Material*>::iterator itVectorData;
for(itVectorData = materialList.begin(); itVectorData != materialList.end(); itVectorData++) {
materialTableList->append ( (std::string)(*(itVectorData))->GetName()) ;
}
return *materialTableList;
}
// ====================================================================
// Expose to Python
// ====================================================================
BOOST_PYTHON_MODULE(TestEm0) {
def ("getMaterialTable", getMaterialTable);
def ("getParticleTable", getParticleTable);
class_<DetectorConstruction, DetectorConstruction*,
bases<G4VUserDetectorConstruction> >
("DetectorConstruction", "testEm0 detector")
.def("SetMaterial",&DetectorConstruction::SetMaterial)
;
class_<PrimaryGeneratorAction, PrimaryGeneratorAction*,
bases<G4VUserPrimaryGeneratorAction> >
("PrimaryGeneratorAction", init<DetectorConstruction*>())
;
class_<RunAction, RunAction*,
bases<G4UserRunAction> >
("RunAction", init<DetectorConstruction*, PrimaryGeneratorAction*>())
;
class_<PhysicsList, PhysicsList*,
bases<G4VUserPhysicsList> >
("PhysicsList", "testEm0 physics list")
;
}
+191
View File
@@ -0,0 +1,191 @@
#!/usr/bin/python
# ==================================================================
# python script for TestEm0 python version
#
# ==================================================================
import Geant4 as g4
import TestEm0
# ==================================================================
# user actions in python
# ==================================================================
# ==================================================================
# main
# ==================================================================
myDC= TestEm0.DetectorConstruction()
g4.gRunManager.SetUserInitialization(myDC)
myPL= TestEm0.PhysicsList()
g4.gRunManager.SetUserInitialization(myPL)
# set user actions...
myPGA= TestEm0.PrimaryGeneratorAction(myDC)
g4.gRunManager.SetUserAction(myPGA)
myRA= TestEm0.RunAction(myDC,myPGA)
# set user action classes
g4.gRunManager.SetUserAction(myRA)
g4.gRunManager.Initialize()
pg = g4.G4ParticleGun()
materialList = TestEm0.getMaterialTable();
particleList = TestEm0.getParticleTable()
enrgyList = ["eV","keV","MeV","GeV","TeV","PeV"]
cutsList = ["um", "mm" , "cm", "m", "km"]
# GUI
from Tkinter import *
class App(Frame):
def init(self):
# title and header
title = Label(self, text="TestEm0 empowered by Geant4Py\n\n\n")
title.grid(row=0, column=1, columnspan = 4)
# particle list box
particle_title = Label(self, text="Particle")
particle_title.grid(row=2, column=0)
particleFrame = Frame(self)
scrollbar2 = Scrollbar(particleFrame)
scrollbar2.pack(side = RIGHT, fill = Y)
self.particleListBox = Listbox(particleFrame, yscrollcommand=scrollbar2.set, exportselection=FALSE,height = 6)
self.particleListBox.pack(side = LEFT)
for item in particleList:
self.particleListBox.insert(END, item)
scrollbar2.config(command=self.particleListBox.yview)
particleFrame.grid(row=3, column=0)
self.particleListBox.select_set(0)
# separator frame
fblank = Frame(self,width = 40)
fblank.grid(row=3,column=1)
# material list box
detmaterial_title = Label(self, text="Material")
detmaterial_title.grid(row=2, column=2)
materialFrame = Frame(self)
scrollbar = Scrollbar(materialFrame)
scrollbar.pack(side = RIGHT, fill = Y)
self.materialListBox = Listbox(materialFrame, yscrollcommand=scrollbar.set, exportselection=FALSE, height = 6)
self.materialListBox.pack(side = LEFT, fill = Y)
for item in materialList:
self.materialListBox.insert(END, item)
scrollbar.config(command=self.materialListBox.yview)
materialFrame.grid(row=3, column=2)
self.materialListBox.select_set(0)
# separator frame
fblank = Frame(self,width = 40)
fblank.grid(row=3,column=3)
# energy
fEnergy = Frame(self)
energyLabel = Label(self, text="Energy")
energyLabel.grid(row = 2, column = 4)
scrollbarEnergy = Scrollbar(fEnergy)
scrollbarEnergy.pack(side = RIGHT, fill = Y)
self.energyEntry = Entry(fEnergy, width= 8 );
self.energyEntry.pack(side = TOP)
self.energyEntry.insert(0, "1.0")
self.energyListBox = Listbox(fEnergy, yscrollcommand=scrollbarEnergy.set,exportselection=FALSE,width=8,height = 5)
self.energyListBox.pack(side = BOTTOM )
for item in enrgyList:
self.energyListBox.insert(END, item)
scrollbarEnergy.config(command=self.energyListBox.yview)
fEnergy.grid(row = 3, column = 4 )
self.energyListBox.select_set(0)
# separator frame
fblank = Frame(self,width = 40)
fblank.grid(row=3,column=5)
# cuts
fCuts = Frame(self)
cutsLabel = Label(self, text="Cuts", width= 8)
cutsLabel.grid(row = 2, column = 6)
scrollbarCuts = Scrollbar(fCuts)
scrollbarCuts.pack(side = RIGHT, fill = Y)
self.cutsEntry = Entry(fCuts, width= 8);
self.cutsEntry.pack(side = TOP)
self.cutsEntry.insert(0, "1.0")
self.cutsListBox = Listbox(fCuts, width= 8 ,yscrollcommand=scrollbarCuts.set,exportselection=FALSE,height = 5)
self.cutsListBox.pack(side = BOTTOM )
for item in cutsList:
self.cutsListBox.insert(END, item)
scrollbarCuts.config(command=self.cutsListBox.yview)
fCuts.grid(row = 3, column = 6 )
self.cutsListBox.select_set(0)
# separator frame
fblank = Frame(self,height = 40)
fblank.grid(row=4,column=0)
# start a run button
startBut = Button(self, bg="green", text="Start a run", command=self.cmd_beamOn)
startBut.grid(row=5, column=2, sticky=W)
# exit button
exitBut = Button(self, bg="grey", text="Exit", command=self.quit)
exitBut.grid(row=5, column=6, sticky=E)
def __init__(self, master=None):
Frame.__init__(self, master)
self.init()
self.grid()
def cmd_beamOn(self):
# get and set particle
if self.particleListBox.curselection():
index =int(self.particleListBox.curselection()[0])
g4.gApplyUICommand("/gun/particle " + particleList[index])
# get and set detector Material
if self.materialListBox.curselection():
index =int(self.materialListBox.curselection()[0])
g4.gApplyUICommand("/testem/det/setMat " + materialList[index])
# get and set energy
energy = self.energyEntry.get()
if self.energyListBox.curselection():
index = int(self.energyListBox.curselection()[0])
unity = enrgyList[index]
g4.gApplyUICommand("/gun/energy " + energy + " " + unity)
# get and set cuts
cuts = self.cutsEntry.get()
if self.cutsListBox.curselection():
index = int(self.cutsListBox.curselection()[0])
unity = cutsList[index]
g4.gApplyUICommand("/testem/phys/setCuts " + cuts + " " + unity)
# run beamOn
g4.gRunManager.BeamOn(1)
app = App()
app.mainloop()
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.1 2006/05/11 04:35:32 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# 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-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyDetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyDetectorConstruction.hh,v 1.3 2006/06/29 15:28:13 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyDetectorConstruction.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyMaterials.cc,v 1.3 2006/06/29 15:28:16 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyMaterials.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyMaterials.hh,v 1.3 2006/06/29 15:28:19 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyMaterials.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyPhysicsList.cc,v 1.3 2006/06/29 15:28:21 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyPhysicsList.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyPhysicsList.hh,v 1.3 2006/06/29 15:28:23 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyPhysicsList.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: Particles.cc,v 1.3 2006/06/29 15:28:25 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// Particles.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListEMstd.cc,v 1.3 2006/06/29 15:28:29 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// PhysicsListEMstd.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pydemo_wp.cc,v 1.3 2006/06/29 15:28:40 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pydemo_wp.cc
//
@@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_core.xsd"/>
<xs:include schemaLocation="gdml_define.xsd"/>
<xs:include schemaLocation="gdml_materials.xsd"/>
<xs:include schemaLocation="gdml_solids.xsd"/>
<xs:include schemaLocation="gdml_replicas.xsd"/>
<xs:include schemaLocation="gdml_parameterised.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="true" name="IdentifiableVolumeType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SinglePlacementType">
<xs:annotation>
<xs:documentation>Represents a single unique copy a of an associated logical volume
in geometrical hierarchy</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="1">
<xs:element name="file" type="FileReferenceType"/>
<xs:element name="volumeref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="position" type="positionType"/>
<xs:element name="positionref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="rotation" type="rotationType"/>
<xs:element name="rotationref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="scale" type="scaleType"/>
<xs:element name="scaleref" type="ReferenceType"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:ID"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="DivisionPlacementType">
<xs:annotation>
<xs:documentation>Represents a division of the associated logical volume
in geometrical hierarchy</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"/>
</xs:sequence>
<xs:attribute name="axis" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="number" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="width" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="offset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="mm" name="unit" type="xs:string"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="VolumeType">
<xs:annotation>
<xs:documentation>Represents a top of a geometrical sub-hierarchy not placed in space
None of its children can coincide with its boundary defined by an associated solid
Two different placements of the same logical volume represent two different geometrical
hierarchies in space</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="IdentifiableVolumeType">
<xs:sequence>
<xs:element name="materialref" type="ReferenceType"/>
<xs:element name="solidref" type="ReferenceType"/>
<xs:choice minOccurs="0">
<xs:element maxOccurs="unbounded" name="physvol" type="SinglePlacementType"/>
<xs:element maxOccurs="1" minOccurs="1" name="divisionvol" type="DivisionPlacementType"/>
<xs:element maxOccurs="1" minOccurs="1" ref="replicavol"/>
<xs:element maxOccurs="1" minOccurs="1" name="paramvol" type="ParameterisedPlacementType"/>
</xs:choice>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<xs:element name="auxiliary" maxOccurs="unbounded" minOccurs="0" type="AuxiliaryType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AssemblyVolumeType">
<xs:annotation>
<xs:documentation>Allows to create a group of volumes bound together without a boundary
All the volumes exits inside the same virtual reference system of the assmebly volume
they belong to
When assembly volume is placed all its children follow the global transformation applied
to their assembly volume
After the assembly volume is placed its children exist as standalone placements in space
independent of each other</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="IdentifiableVolumeType">
<xs:choice>
<xs:element maxOccurs="unbounded" name="physvol" type="SinglePlacementType"/>
<xs:element maxOccurs="1" minOccurs="1" ref="replicavol"/>
<xs:element maxOccurs="1" minOccurs="1" name="paramvol" type="ParameterisedPlacementType"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="LogicalSurfaceType">
<xs:annotation>
<xs:documentation>Base type for logical surfaces (for the moment only optical)
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
<xs:attribute name="surfaceproperty" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="Surface" type="LogicalSurfaceType">
<xs:annotation>
<xs:documentation>Abstract element for all solids substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="bordersurface" substitutionGroup="Surface">
<xs:annotation>
<xs:documentation>Surface between two physical volumes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="LogicalSurfaceType">
<xs:sequence>
<xs:element name="physvolref" type="ReferenceType"/>
<xs:element name="physvolref" type="ReferenceType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="skinsurface" substitutionGroup="Surface">
<xs:annotation>
<xs:documentation>Surface between two physical volumes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="LogicalSurfaceType">
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="structure">
<xs:annotation>
<xs:documentation>Definitions of a geometrical hierarchy of a set of volumes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="volume" type="VolumeType"/>
<xs:element name="assembly" type="AssemblyVolumeType"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<xs:element ref="ParameterisationAlgorithm"/>
</xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Surface"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="gdml">
<xs:complexType>
<xs:sequence>
<xs:element ref="define"/>
<xs:element ref="materials"/>
<xs:element ref="solids"/>
<xs:element ref="structure"/>
<xs:element maxOccurs="unbounded" name="setup">
<xs:annotation>
<xs:documentation>Geometry setup representing the particular geometry hierarchy by refferring to
a given volume which becomes the top level volume</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="world" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to the previously defined volume
in the structure block chosen by this setup
World volumme can't be an assembly volume</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:ID" use="required"/>
<xs:attribute name="version" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="2.10.0" name="version" type="xs:string">
<xs:annotation>
<xs:documentation>The GDML Schema version consists of 3 digits X.Y.Z
where these mean:
X - major number, increased when major new
features or backward incompatible bug fixes
are added and means the GDML Processor is
allowed to refuse processing of such a
document if this is using the more recent
version of the GDML Schema then GDML Processor
understands
Y - minor number, increased when incremental and
backward compatible changes or improvements
are made into the GDML Schema. GDML Processor
should be able to process such a document
using higher minor version number then that of
the GDML Processor
Z - bugfix revision number, increased when fully
backward compatible changes which resolve a
problem in GDML Schema are applied</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema []>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:simpleType name="InlineExpressionType">
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:simpleType name="ExpressionOrIDREFType">
<xs:union memberTypes="xs:IDREF InlineExpressionType xs:double "></xs:union>
</xs:simpleType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableExpressionType">
<xs:simpleContent>
<xs:extension base="InlineExpressionType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="ExpressionType" mixed="true">
<xs:annotation>
<xs:documentation>
A base type for expressions
</xs:documentation>
</xs:annotation>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="IdentifiableExpressionType" mixed="true">
<xs:annotation>
<xs:documentation>
Named (referenced), global scope,
expression (may contain named constants and quantities)
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ExpressionType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ConstantType">
<xs:annotation>
<xs:documentation>An anonymous, local scope, value</xs:documentation>
</xs:annotation>
<xs:attribute name="value" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="VariableType">
<xs:annotation>
<xs:documentation>An anonymous, local scope, value</xs:documentation>
</xs:annotation>
<xs:attribute name="value" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableConstantType">
<xs:annotation>
<xs:documentation>Named (referenced), global scope, constant value</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ConstantType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableVariableType">
<xs:annotation>
<xs:documentation>Named (referenced), local scope, variable value</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="VariableType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="QuantityType">
<xs:annotation>
<xs:documentation>An anonymous quantity, local scope, with a unit,
(possibly of a given type) quantity</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ConstantType">
<!-- The unit attribute was originally required,
but set to optional and is recommended to provide
a default value in its derived type
-->
<xs:attribute name="unit" type="xs:string" use="optional"></xs:attribute>
<xs:attribute name="type" type="xs:string" use="optional"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableQuantityType">
<xs:annotation>
<xs:documentation>Named (referenced), global scope,(possibly of a given type) quantity</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="QuantityType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ThreeVectorType">
<xs:annotation>
<xs:documentation>An anonymous, 3 dimensional, local scope, vector of doubles</xs:documentation>
</xs:annotation>
<xs:attribute default="0.0" name="x" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="y" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="z" type="ExpressionOrIDREFType"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MatrixType">
<xs:annotation>
<xs:documentation>A bi-dimensional matrix of doubles</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID"></xs:attribute>
<xs:attribute name="coldim" type="xs:nonNegativeInteger"></xs:attribute>
<xs:attribute name="values" type="xs:string"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableThreeVectorType">
<xs:annotation>
<xs:documentation>Named (referenced), 3 dimensional, global scope, vector of doubles</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ThreeVectorType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="QuantityVectorType">
<xs:annotation>
<xs:documentation>An anonymous, 3 dimensional, local scope, with a unit,
(possibly of a given type) quantity vector</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ThreeVectorType">
<!-- The unit attribute was originally required,
but set to optional and is recommended to provide
a default value in its derived type
-->
<xs:attribute name="unit" type="xs:string" use="optional"></xs:attribute>
<xs:attribute name="type" type="xs:string" use="optional"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableQuantityVectorType">
<xs:annotation>
<xs:documentation>Named (referenced), 3 dimensional, global scope, with a unit,
(possibly of a given type) quantity vector</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="QuantityVectorType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReferenceType">
<xs:annotation>
<xs:documentation>Local reference to an element of a named type</xs:documentation>
</xs:annotation>
<xs:attribute name="ref" type="xs:IDREF" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="FileReferenceType">
<xs:annotation>
<xs:documentation>Reference to an external file containing sub-volume information</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:anyURI" use="required"></xs:attribute>
<xs:attribute name="volname" type="xs:string" use="optional"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReferenceListType">
<xs:annotation>
<xs:documentation>List of local references to a set of element of a named type</xs:documentation>
</xs:annotation>
<xs:attribute name="refs" type="xs:IDREFS" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AuxiliaryType">
<xs:annotation>
<xs:documentation>Auxiliary information like sensitive detector declaration, etc.</xs:documentation>
</xs:annotation>
<xs:attribute name="auxtype" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="auxvalue" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_core.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="define" type="defineType">
<xs:annotation>
<xs:documentation>Definition block of global named constants, quantitties, expressions,
positions and rotations which may be used by name or
by a reference in scope of the current document</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="defineType">
<xs:annotation>
<xs:documentation>The global complex type is defined in order to reuse this defintion
in derived schemas</xs:documentation>
</xs:annotation>
<!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
<xs:choice maxOccurs="unbounded">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="constant" type="IdentifiableConstantType">
<xs:annotation>
<xs:documentation>Named constant</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="variable" type="IdentifiableVariableType">
<xs:annotation>
<xs:documentation>Named variable</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="matrix" type="MatrixType">
<xs:annotation>
<xs:documentation>Named matrix</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="quantity" type="IdentifiableQuantityType">
<xs:annotation>
<xs:documentation>Named quantity</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="expression" type="IdentifiableExpressionType">
<xs:annotation>
<xs:documentation>Named expression, may contain other named constants,
quantities and expressions</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="position" type="positionType">
<xs:annotation>
<xs:documentation>Named cartesian position, default unit mm</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="rotation" type="rotationType">
<xs:annotation>
<xs:documentation>Named cartesian rotation, default unit radian</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="scale" type="scaleType">
<xs:annotation>
<xs:documentation>Named cartesian rotation, default unit radian</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:choice>
<!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="positionType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
<xs:attribute default="mm" type="xs:string" name="unit"/>
<xs:attribute default="cartesian" type="xs:string" name="type"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="rotationType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
<xs:attribute default="radian" type="xs:string" name="unit"/>
<xs:attribute default="cartesian" type="xs:string" name="type"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="scaleType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="loop">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element maxOccurs="unbounded" ref="Solid"/>
<xs:element name="volume" type="VolumeType"/>
<xs:element name="physvol" type="SinglePlacementType"/>
</xs:choice>
<xs:attribute name="for" type="xs:string">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="from" type="xs:nonNegativeInteger">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="to" type="xs:positiveInteger">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="step" type="xs:positiveInteger">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,390 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema []>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="0.1" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:include schemaLocation="gdml_core.xsd"></xs:include>
<xs:include schemaLocation="gdml_define.xsd"></xs:include>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- Removed abstract="true" in AtomType -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AtomType">
<xs:annotation>
<xs:documentation>Atomic mass, quantity type A, default unit g/mole</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="g/mole" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="A" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="DensityType">
<xs:annotation>
<xs:documentation>Density</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="g/cm3" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="density" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:group name="MaterialPropertiesGroup">
<xs:annotation>
<xs:documentation>General material properties</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element maxOccurs="unbounded" name="property">
<xs:annotation>
<xs:documentation>General material property (const or vector)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="RL">
<xs:annotation>
<xs:documentation>Radiation length</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="cm" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="X0" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="RLref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named radiation length quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="AL">
<xs:annotation>
<xs:documentation>Absorption length</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="cm" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="lambda" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ALref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named absorption length quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="T">
<xs:annotation>
<xs:documentation>Temperature</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="K" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="temperature" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Tref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to previously defined named temperature quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="P">
<xs:annotation>
<xs:documentation>Pressure</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="pascal" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="pressure" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Pref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to previously defined named pressure quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:group>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:attributeGroup name="MaterialAttributeGroup">
<xs:annotation>
<xs:documentation>General material attributes</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID" use="required">
<xs:annotation>
<xs:documentation>Material name</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="formula" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Material chemical formula</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute default="unknown" name="state">
<xs:annotation>
<xs:documentation>Material physical state</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="gas"></xs:enumeration>
<xs:enumeration value="liquid"></xs:enumeration>
<xs:enumeration value="solid"></xs:enumeration>
<xs:enumeration value="unknown"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialType">
<xs:annotation>
<xs:documentation>Base type for materials</xs:documentation>
</xs:annotation>
<xs:group ref="MaterialPropertiesGroup"></xs:group>
<xs:attributeGroup ref="MaterialAttributeGroup"></xs:attributeGroup>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="ComplexMaterialType">
<xs:annotation>
<xs:documentation>
Base type for complex materials
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
-->
<!-- <xs:group ref="MaterialPropertiesGroup"/> -->
<!--
Removed from referenced attribute group
<xs:attribute name="N" use="prohibited"/>
-->
<!--
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="materials">
<xs:annotation>
<xs:documentation>Materials description</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<xs:element minOccurs="0" name="define" type="defineType">
<xs:annotation>
<xs:documentation>Material related definitons of constants and quantities
In this version of schema these become visible in global scope</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="isotope" type="MaterialIsotopeType">
<xs:annotation>
<xs:documentation>An isotope</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="element" type="MaterialElementType">
<xs:annotation>
<xs:documentation>A simple element or an element composed of isotopes</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="material" type="MaterialMixtureType">
<xs:annotation>
<xs:documentation>A composite or a mixture complex material</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialIsotopeType">
<xs:annotation>
<xs:documentation>Exported isotope type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>Density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:element name="atom" type="AtomType"></xs:element>
</xs:sequence>
<xs:attribute name="N" type="xs:positiveInteger" use="required">
<xs:annotation>
<xs:documentation>Number of nucleons</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Z" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialElementType">
<xs:annotation>
<xs:documentation>Exported material element type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>Density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice>
<xs:annotation>
<xs:documentation>An element can be defined either as a simple element or by a set
of isotopes fractions</xs:documentation>
</xs:annotation>
<xs:element name="atom" type="AtomType"></xs:element>
<xs:element maxOccurs="unbounded" name="fraction">
<xs:annotation>
<xs:documentation>An isotope fraction of an element where n is the actual amount
of the isotope in the element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:double" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="N" type="xs:positiveInteger" use="optional">
<xs:annotation>
<xs:documentation>Number of nucleons</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialMixtureType">
<xs:annotation>
<xs:documentation>Exported material composite or mixture type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<!-- <xs:extension base="ComplexMaterialType"> -->
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice>
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>Density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice>
<xs:annotation>
<xs:documentation>A complex material can be defined as a simple mixture when
its material properties are known or as a composite material
or a mixture. A composite material is defined by a set of elements
by specifying the number of atoms.
The second way is by a set of material fractions where the fractions
can be either simple elements or other complex materials.
The restriction is that one can't mix composition by atoms and fractions
at the same time.</xs:documentation>
</xs:annotation>
<xs:element name="atom" type="AtomType"></xs:element>
<xs:element maxOccurs="unbounded" name="composite">
<xs:annotation>
<xs:documentation>Elements of this composite material specified as a set of local references
to already defined simple elements where value of n in each means the number of atoms</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:positiveInteger" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" name="fraction">
<xs:annotation>
<xs:documentation>Fractions of this mixture specified as a set of local references to already defined
elements or other mixtures where value of n in each means the fraction of the whole
material in the range 0.0 &lt; n &lt; 1.0</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:double" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,104 @@
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_define.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="false" name="DimensionsType">
<xs:annotation>
<xs:documentation>Abstract base for parametrised dimensions</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="Dimensions" abstract="true" type="DimensionsType">
<xs:annotation>
<xs:documentation>Abstract element for substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="BoxDimensionsType">
<xs:annotation>
<xs:documentation>Dimensions for parametrised boxes. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="DimensionsType">
<xs:attribute default="1.0" name="x" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="y" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="z" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="box_dimensions" substitutionGroup="Dimensions" type="BoxDimensionsType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="TubeDimensionsType">
<xs:annotation>
<xs:documentation>Dimensions for parametrised boxes. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="DimensionsType">
<xs:attribute default="1.0" name="DeltaPhi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="InR" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="OutR" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="StartPhi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="hz" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tube_dimensions" substitutionGroup="Dimensions" type="TubeDimensionsType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="false" name="ParameterisationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract base for parameterised placement strategies</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="ParameterisationAlgorithm" abstract="true" type="ParameterisationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract element for substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="PositionSizeParameterisationAlgorithmType">
<xs:annotation>
<xs:documentation>Parameterised volumes get created using
the tabularized position and sizes. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ParameterisationAlgorithmType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="parameters" type="ParametersType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="parameterised_position_size" substitutionGroup="ParameterisationAlgorithm" type="PositionSizeParameterisationAlgorithmType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ParameterisedPlacementType">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
<xs:documentation>Base type for parameterised volumes</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"></xs:element>
<xs:element ref="ParameterisationAlgorithm"/>
</xs:sequence>
<xs:attribute name="ncopies" type="xs:positiveInteger" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="paramvol" type="ParameterisedPlacementType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ParametersType">
<xs:annotation>
<xs:documentation>
Holds parameteres for parameterised volumes.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element type="positionType" name="position"/>
<xs:element ref="Dimensions"/>
</xs:sequence>
<xs:attribute type="xs:positiveInteger" use="required" name="number"/>
</xs:complexType>
</xs:schema>
@@ -0,0 +1,80 @@
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_define.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="false" name="ReplicationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract base for replication placement strategies</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="ReplicationAlgorithm" abstract="true" type="ReplicationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract element for substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AxisReplicationAlgorithmType">
<xs:annotation>
<xs:documentation>Replica volumes get created along the specified direction
starting with the first replica placed at the given position and rotated
according to the given rotation and others placed using the given distance;
If position and/or rotation is omitted the defaults will be applied, e.g.
position at the mother volume center and identity rotation;
NOTE: THE ROTATION IS APPLIED TO ALL REPLICATED VOLUMES!</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ReplicationAlgorithmType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="position" type="positionType"/>
<xs:element name="positionref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="rotation" type="rotationType"/>
<xs:element name="rotationref" type="ReferenceType"/>
</xs:choice>
<xs:choice>
<xs:element ref="direction"/>
<xs:element name="directionref" type="ReferenceType"/>
</xs:choice>
<xs:element ref="width"/>
<xs:element ref="offset"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="replicate_along_axis" substitutionGroup="ReplicationAlgorithm" type="AxisReplicationAlgorithmType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReplicaPlacementType">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
<xs:documentation>Base type for replicated volumes</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"></xs:element>
<xs:element ref="ReplicationAlgorithm"/>
</xs:sequence>
<xs:attribute name="number" type="xs:positiveInteger" use="required"/>
<xs:attribute name="copy_num_start" type="xs:positiveInteger" use="optional" default="1"/>
<xs:attribute name="copy_num_step" type="xs:positiveInteger" use="optional" default="1"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="directionType">
<xs:complexContent>
<xs:restriction base="QuantityVectorType">
<xs:attribute default="mm" type="xs:string" name="unit"/>
<xs:attribute default="cartesian" type="xs:string" name="type"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="direction" type="directionType"/>
<xs:element name="width" type="QuantityType"/>
<xs:element name="offset" type="QuantityType"/>
<xs:element name="replicavol" type="ReplicaPlacementType"/>
</xs:schema>
@@ -0,0 +1,833 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_core.xsd"></xs:include>
<xs:include schemaLocation="gdml_define.xsd"></xs:include>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SolidType">
<xs:annotation>
<xs:documentation>Base solid type</xs:documentation>
</xs:annotation>
<xs:attribute default="mm" name="lunit" type="xs:string">
<xs:annotation>
<xs:documentation>Length unit of all dimensions used for this instance of solid</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute default="radian" name="aunit" type="xs:string">
<xs:annotation>
<xs:documentation>Angle unit of angles used in definition of this solid</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="BooleanSolidType">
<xs:annotation>
<xs:documentation>Base type for boolean solids</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="first" type="ReferenceType"></xs:element>
<xs:element name="second" type="ReferenceType"></xs:element>
<xs:choice minOccurs="0">
<xs:element name="position" type="positionType"></xs:element>
<xs:element name="positionref" type="ReferenceType"></xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="rotation" type="rotationType"></xs:element>
<xs:element name="rotationref" type="ReferenceType"></xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="firstposition" type="positionType"></xs:element>
<xs:element name="firstpositionref" type="ReferenceType"></xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="firstrotation" type="rotationType"></xs:element>
<xs:element name="firstrotationref" type="ReferenceType"></xs:element>
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="reflectedSolid" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Reflected solid:
sx, sy, sz are scale components (containing reflection),
rx, ry, rz are rotation angles around given axes and
dx, dy, dz is the translation.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="solid" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="1.0" name="sx" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="sy" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="sz" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rx" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="ry" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rz" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="dx" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="dy" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="dz" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SurfacePropertyType">
<xs:annotation>
<xs:documentation>Base surface type</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
<xs:attribute name="type" type="xs:string" default="dielectric_dielectric"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="Solid" type="SolidType">
<xs:annotation>
<xs:documentation>Abstract element for all solids substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="SurfaceProperty" type="SurfacePropertyType">
<xs:annotation>
<xs:documentation>Abstract element for surfaces substitution</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="solids">
<xs:annotation>
<xs:documentation>Solids definitions block</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element minOccurs="0" name="define" type="defineType">
<xs:annotation>
<xs:documentation>Definitions of constants and expressions to be used for solids'
dimensions and transformations
In this version these become part of the global scope.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" ref="Solid"></xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="SurfaceProperty"></xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="union" substitutionGroup="Solid" type="BooleanSolidType">
<xs:annotation>
<xs:documentation>Exported boolean union of two solids</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="subtraction" substitutionGroup="Solid" type="BooleanSolidType">
<xs:annotation>
<xs:documentation>Exported boolean subtraction of two solids</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="intersection" substitutionGroup="Solid" type="BooleanSolidType">
<xs:annotation>
<xs:documentation>Exported boolean intersectioin of two solids</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="box" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG box solid described by 3 dimensions of x, y, and z</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedbox" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG twisted box solid described by 4 dimensions of
x length along x axis
y length along y axis
z length along z axis
PhiTwist twist angle </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedtrap" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>general twisted trapezoid. faces perpendicular to the z planes are trapezia, and their centres are
not necessarily on a line paralell to the z axis.
PhiTwist Twist Angle
z length along the z-axis
Theta Polar angle of the line joining the centres of the faces at -/+z
Phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
y1 length along y of the face at -z
x1 length along x of the side at y=-y1 of the face at -z
x2 length along x of the side at y=+y1 of the face at -z
y2 length along y of the face at +z
x3 length along x of the side at y=-y2 of the face at +z
x4 length along x of the side at y=+y2 of the face at +z
Alph Angle with respect to the y axis from the centre of the side </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="Theta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="Phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="Alph" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedtrd" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>different length axis twistable trapezoid. faces perpendicular to the z planes are trapezia, and their centres are
not necessarily on a line paralell to the z axis.
PhiTwist Twist Angle
z length along the z-axis
y1 length along y of the face at -z
x1 length along x of the side at y=-y1 of the face at -z
x2 length along x of the side at y=+y1 of the face at -z
y2 length along y of the face at +z </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="paraboloid" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG paraboloid defined by
rlo radius at -dz
rhi radius at +dz
dz half z length
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="rlo" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rhi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="sphere" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG sphere or spherical shell segment solid described by
rmin inner radius
rmax outer radius
startphi starting angle of the segment in radians(0 &lt;= phi &lt;= 2*PI)
deltaphi delta angle of the segment in radians
starttheta starting angle of the segment in radians(0 &lt;= theta &lt;= PI)
deltatheta delta angle of the segment in radians
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="starttheta" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltatheta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="ellipsoid" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG ellispoid or ellipsoidal shell segment solid described by
ax x semiaxis
by y semiaxis
cz z semiaxis
zcut1 bottom plane cutting ellipsoid
zcut2 top plane cutting ellispoid
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="ax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="by" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="cz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="-1000000.0" name="zcut1" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1000000.0" name="zcut2" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tube" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG tube or tube segement solid described by
rmin Inner radius
rmax Outer radius
z length in z
startphi The starting phi angle in radians, adjusted such that
(startphi+deltaphi &lt;= 2PI, startphi &gt; -2PI)
deltaphi Delta angle of the segment in radians</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedtubs" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG twisted tube segement solid described by
twistedangle twist angle
endinnerrad inside radius at end of segment
endouterrad outside radius at end of segment
zlen z length of segment
phi phi angle of a segment </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="twistedangle" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="endinnerrad" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="endouterrad" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="zlen" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="cutTube" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG cut tube or cut tube segment solid described by
rmin Inner radius
rmax Outer radius
z length in z
startphi The starting phi angle in radians, adjusted such that (startphi+deltaphi &lt;= 2PI, startphi &gt; -2PI)
deltaphi Delta angle of the segment in radians
lowX, lowY, lowZ Normal at lower Z plane
highX, highY, highZ Normal at higher Z plane
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="lowX" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="lowY" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="lowZ" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="highX" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="highY" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="highZ" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="cone" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG cone or cone segment described by
rmin1 inside radius at z/2
rmin2 inside radius at z/2
rmax1 outside radius at z/2
rmax2 outside radius at z/2
z length in z
startphi starting angle of the segment in radians
deltaphi delta angle of the segment in radians</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="rmin1" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rmin2" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rmax2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="polycone" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG polycone or polycone segment described by
startphi starting angle of the segment in radians
deltaphi delta angle of the segment in radians
and a set of z-planes each described by
rmin inside radius at z/2
rmax outside radius at z/2
z length in z
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="zplane" minOccurs="1" maxOccurs="unbounded" type="ZPlaneType"/>
</xs:sequence>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- +++++++++++++ -->
<xs:complexType name="ZPlaneType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="para" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG parallelepiped solid is described by
x, y, z length in x,y,z
alpha Angle formed by the y axis and by the plane joining the centre of the faces
G4Parallel to the z-x plane at -y and +y
theta Polar angle of the line joining the centres of the faces at -z and +z in z
phi Azimuthal angle of the line joining the centres of the faces at -z and +z in z</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="alpha" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="trd" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG trapezoid solid with varying x and y dimensions along z axis
x1 Length along x at the surface positioned at -z
x2 Length along x at the surface positioned at +z
y1 Length along y at the surface positioned at -z
y2 Length along y at the surface positioned at +z
z Length along z axis</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="trap" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG general trapezoid solid is described by
z Length along the z-axis
theta Polar angle of the line joining the centres of the faces at -/+z
phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
y1 Length along y of the face at -z
x1 Length along x of the side at y = -y1 of the face at -z
x2 Length along x of the side at y = +y1 of the face at -z
alp1 Angle with respect to the y axis from the centre of the side at y =- y1 to the centre at y = +y1 of the face at -z
y2 Length along y of the face at +z
x3 Length along x of the side at y = -y2 of the face at +z
x4 Length along x of the side at y = +y2 of the face at +z
alp2 Angle with respect to the y axis from the centre of the side at y = -y2 to the centre at y = +y2 of the face at +z</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="alpha1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="alpha2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="torus" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG torus solid is described by
rmin Inside radius
rmax Outside radius
rtor swept radius of torus
startphi The starting phi angle in radians adjusted such that sphi+dphi lt 2PI, sphi gt -2PI
deltaphi Delta angle of the segment in radians
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="rmin" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rtor" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="startphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="orb" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG orb solid (simplified sphere with only rmax) is described by
r Outside radius</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="r" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="polyhedra" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Polyhedra is described by
startphi initial phi starting angle
totalphi total phi angle
numsides number sides
and a set of zplanes.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="zplane" minOccurs="1" maxOccurs="unbounded" type="ZPlaneType"/>
</xs:sequence>
<xs:attribute name="startphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="numsides" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="TwoDimVertexType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SectionType">
<xs:attribute name="zOrder" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="zPosition" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="xOffset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="yOffset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="scalingFactor" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="xtru" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Poligonal extrusion is described by
an unbounded (min. 3) number of vertices of the blueprint polygon
and an unbounded number of Z sections.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:sequence>
<xs:element name="twoDimVertex" minOccurs="3" maxOccurs="unbounded" type="TwoDimVertexType"/>
</xs:sequence>
<xs:sequence>
<xs:element name="section" minOccurs="2" maxOccurs="unbounded" type="SectionType"/>
</xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="hype" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Tube with hyperbolic profile described by
rmin innerRadius
rmax outerRadius
inst innerStereo
outst outerStereo
z z length
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="rmin" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="inst" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="outst" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="eltube" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Volume representing a tube with elliptical
cross section.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="dx" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dy" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tet" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Volume representing a tetrahedron.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="arb8" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Volume representing an (almost)arbitrary 8 vertices solid.
The solid is defined by two quadrilaterals sitting on parallel planes,
the distance between these two planes is dz*2.
The base quadrilateral contained within the plane located at -dz is defined by
the first 4 vertices (v1,v2,v3,v4 each one with the x and y coordinates).
The other parallel quadrilateral contained within the plane at +dz is defined by
the other 4 vertices (v5,v6,v7,v8 each one with the x and y coordinates).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="v1x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v1y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v2x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v2y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v3x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v3y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v4x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v4y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v5x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v5y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v6x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v6y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v7x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v7y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v8x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v8y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Tessellated solid elements -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="FacetType">
<xs:annotation>
<xs:documentation>Base facet type</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="Facet" type="FacetType">
<xs:annotation>
<xs:documentation>Abstract element for all facets substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="triangular" substitutionGroup="Facet">
<xs:annotation>
<xs:documentation>
Triangular facet.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="FacetType">
<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="type" type="xs:string" default="ABSOLUTE"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="quadrangular" substitutionGroup="Facet">
<xs:annotation>
<xs:documentation>
Quadrangular facet.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="FacetType">
<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="type" type="xs:string" default="ABSOLUTE"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tessellated" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Tessellated solid
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="Facet" minOccurs="1" maxOccurs="unbounded" type="FacetType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="opticalsurface" substitutionGroup="SurfaceProperty">
<xs:annotation>
<xs:documentation>Optical surface used by Geant4 optical processes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SurfacePropertyType">
<xs:attribute name="model" type="xs:string" default="glisur"></xs:attribute>
<xs:attribute name="finish" type="xs:string" default="polished"></xs:attribute>
<xs:attribute name="value" type="xs:string" default="1.0"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
+531
View File
@@ -0,0 +1,531 @@
<?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>
</gdml>
+56
View File
@@ -0,0 +1,56 @@
#!/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.")
+64
View File
@@ -0,0 +1,64 @@
#!/usr/bin/python
# ==================================================================
# An example for reading a GDML file
#
# ==================================================================
from Geant4 import *
from Geant4.G4gdml import *
import ExN01pl, ParticleGun
# ==================================================================
# user actions in python
# ==================================================================
class MyDetectorConstruction(G4VUserDetectorConstruction):
"My Detector Construction"
def __init__(self):
G4VUserDetectorConstruction.__init__(self)
self.world= None
self.sxp= SAXProcessor()
self.config= ProcessingConfigurator()
# -----------------------------------------------------------------
def __del__(self):
self.sxp.Finalize()
# -----------------------------------------------------------------
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()
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.")
+41
View File
@@ -0,0 +1,41 @@
#!/usr/bin/python
# ==================================================================
# An example of writing a GDML file
#
# ==================================================================
from Geant4 import *
from Geant4.G4gdml import *
import Qmaterials, Qgeom
import ExN01pl, ParticleGun
# ==================================================================
# main
# ==================================================================
# set geometry
Qmaterials.Construct()
Qgeom.Construct()
# 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.")
# write to a GDML file
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)
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: EzDetectorConstruction.cc,v 1.3 2006/06/29 15:28:43 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// EzDetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: EzDetectorConstruction.hh,v 1.3 2006/06/29 15:28:46 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// EzDetectorConstruction.hh
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.3 2006/08/10 08:50:18 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVolume.cc,v 1.3 2006/06/29 15:28:52 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVolume.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVolume.hh,v 1.3 2006/06/29 15:28:55 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVolume.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVoxelParameterization.cc,v 1.3 2006/06/29 15:28:58 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVoxelParameterization.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVoxelParameterization.hh,v 1.3 2006/06/29 15:29:01 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVoxelParameterization.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzWorld.cc,v 1.4 2006/08/25 05:13:16 kmura Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzWorld.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzWorld.hh,v 1.3 2006/06/29 15:29:07 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzWorld.hh
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/08/08 05:26:19 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyEzgeom.cc,v 1.3 2006/06/29 15:28:49 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyEZgeom.cc
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:17:30 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.3 2006/06/14 08:23:52 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
+1 -1
View File
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.3 2006/07/12 01:56:23 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: ExN01DetectorConstruction.cc,v 1.4 2006/06/29 15:29:10 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// ExN01DetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: ExN01DetectorConstruction.hh,v 1.4 2006/06/29 15:29:12 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// ExN01DetectorConstruction.hh
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:25:12 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyExN01geom.cc,v 1.4 2006/06/29 15:29:14 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyExN01geom.cc
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorConstruction.cc,v 1.5 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorConstruction.hh,v 1.5 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorMessenger.cc,v 1.1 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorMessenger.hh,v 1.1 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:25:12 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================

Some files were not shown because too many files have changed in this diff Show More