Import Geant4 9.1.0 source tree
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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.
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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='/';
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
#
|
||||
|
||||
@@ -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
|
||||
#
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
ifeq ($(G4SYSTEM),SUN-CC)
|
||||
CXX := CC
|
||||
ifdef G4OPTIMISE
|
||||
CXXFLAGS := -O
|
||||
CXXFLAGS := -xO2
|
||||
else
|
||||
ifdef G4DEBUG
|
||||
CXXFLAGS := -g
|
||||
|
||||
@@ -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
@@ -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 $
|
||||
//
|
||||
|
||||
|
||||
|
||||
@@ -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,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
|
||||
# ===========================================================
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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,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
|
||||
#
|
||||
|
||||
Vendored
+124
-1
@@ -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 "."
|
||||
|
||||
# ---
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
+20
-21
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -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......
|
||||
+129
-20
@@ -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......
|
||||
+40
-42
@@ -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
@@ -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 < n < 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 <= phi <= 2*PI)
|
||||
deltaphi delta angle of the segment in radians
|
||||
starttheta starting angle of the segment in radians(0 <= theta <= 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 <= 2PI, startphi > -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 <= 2PI, startphi > -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>
|
||||
@@ -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
@@ -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.")
|
||||
|
||||
Executable
+64
@@ -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
@@ -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,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
Reference in New Issue
Block a user